【问题标题】:Storing username with post confirmation trigger (AWS, Lambda, DynamoDB)使用后确认触发器存储用户名(AWS、Lambda、DynamoDB)
【发布时间】:2021-01-06 01:50:21
【问题描述】:

我尝试使用 Cognito 发布确认触发器将一些参数存储在 AWS DynamoDB 中。 lambda 是用 node.js 编写的,但我无法存储注册的 cognito 用户的用户名。

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient({region: 'eu-central-1'});


exports.handler = async (event, context, callback) => {
    console.log(event);

    const username = event.userName;

    await createMessage(username).then(() => {
        callback(null, {
            statusCode: 201,
            body: '',
            headers: {
                'Access Control Allow Origin' : '*'
            }
        });
    }).catch((err) => {
        console.error(err);
    });
};

function createMessage(username){
    const familyid = (new Date()).getTime().toString(36) + Math.random().toString(36).slice(2);
    const params = {
        TableName: 'eldertech',
        Item: {
            'UserId' : username,
            'message' : familyid
        }
    };
    return dynamodb.put(params).promise();
}

我的测试:

{
"username":"admin",
"email":"admin@admin.com",
"userId": "AD87S"
}

错误: ERROR ValidationException:一个或多个参数值无效:项中缺少键 UserId

有人可以帮助新手吗?

【问题讨论】:

  • 在你的测试中有"userId": "AD87S"。我没有看到它在任何地方使用过?您的UserId 也是表中以字符串为数据类型的实际主键吗?您使用的是event.userName,但在测试对象中有username

标签: node.js amazon-web-services aws-lambda amazon-dynamodb amazon-cognito


【解决方案1】:

好吧,我只是打错了....

const username = event.username;

用户名中没有大写n...

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2020-12-21
    • 2020-12-23
    • 2020-10-09
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多