我在实施确认后lambda函数时遇到麻烦,在该函数中,我从注册过程中获取用户提交的凭据,并将其写入“用户” DynamoDB表中。我要写到表中的特定条目是 - 用户名 -电子邮件 -真实姓名
为了区分用户,我需要将主键设置为“ sub”值,因为用户可以更改其用户名,并且将来可能会引起问题。
我困惑的要点如下
1)我应该以什么角色开始Lambda功能?
创建lambda函数时,我需要赋予它一个开始角色,但我不确定自己应该使用哪个入门模板。我知道我将需要DynamoDB写入权限,但我没有看到该模板。
2)如何访问Cognito用户的各个字段?
据我所知,这些值应该存储在处理程序函数的'event'参数中,但是我找不到任何文档或示例事件来说明如何访问诸如'sub'之类的各个字段,“电子邮件”等
答案 0 :(得分:2)
1)您的Lambda角色
请注意,默认情况下,Lambda将已经具有CloudWatch访问权限。 AmazonDynamoDBFullAccess拥有的权限超出了您严格需要的权限,但并非不合理。如果您确实希望获得更细粒度的权限,则至少可以将其与AmazonDynamoDBFullAccess一起使用,然后从那里开始。还要注意,您根本不需要任何Cognito权限,因为您要做的只是解析Cognito发送给您的数据。
确保在脚本中导入相关的DynamoDB库。
例如:
exports.handler = (event, context, callback) => {
// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set the region
AWS.config.update({region: 'us-east-1'});
// Create the DynamoDB service object
ddb = new AWS.DynamoDB({apiVersion: '2012-10-08'});
};
2)访问各个Cognito用户数据
假设您正在使用NodeJ,如下所示:
event.request.userAttributes.email
更多详细信息here
最后一件事,您不需要为Lambda函数分配触发器。您所需要做的就是进入Cognito,并在触发器部分中分配Lambda函数。这样,Cognito会直接调用Lambda-Lambda不需要监听任何特殊事件。