【发布时间】: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