Amazon web services 通过后确认lambda函数将Cognito用户信息写入DynamoDB?
我在实现确认后lambda函数时遇到问题,在该函数中,我从注册过程中获取用户提交的凭据,并将其写入“用户”DynamoDB表。我试图写入表中的具体条目如下 -用户名 -电子邮件 -实际姓名 为了区分用户和其他用户,我需要主键是'sub'值,因为用户可以更改他们的用户名,这可能会在将来导致问题 我感到困惑的要点如下 1) 我应该以什么角色开始Lambda功能 创建lambda函数时,我需要给它一个起始角色,但我不确定应该使用什么起始模板。我知道我将需要DynamoDB写访问权限,但我没有看到用于此的模板 2) 如何访问Cognito用户的各个字段 据我所知,这些值应该存储在handler函数的“event”参数中,但我找不到任何文档或示例事件来显示如何访问诸如“sub”、“email”等单个字段。1)您的Lambda角色Amazon web services 通过后确认lambda函数将Cognito用户信息写入DynamoDB?,amazon-web-services,aws-lambda,amazon-dynamodb,amazon-cognito,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Amazon Cognito,我在实现确认后lambda函数时遇到问题,在该函数中,我从注册过程中获取用户提交的凭据,并将其写入“用户”DynamoDB表。我试图写入表中的具体条目如下 -用户名 -电子邮件 -实际姓名 为了区分用户和其他用户,我需要主键是'sub'值,因为用户可以更改他们的用户名,这可能会在将来导致问题 我感到困惑的要点如下 1) 我应该以什么角色开始Lambda功能 创建lambda函数时,我需要给它一个起始角色,但我不确定应该使用什么起始模板。我知道我将需要DynamoDB写访问权限,但我没有看到用于此
- 创建Lambda函数,而不是使用模板,选择 创建一个新角色并为其命名(比如MyLambdaRole)
- 进入IAM,进入角色菜单选项并找到MyLambdaRole角色。附加以下策略:AmazondynamodFullAccess
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用户数据
假设您正在使用NodeJs,如下所示:
event.request.userAttributes.email
更多细节
最后一件事,您不需要为Lambda函数分配触发器。您所需要做的就是进入Cognito,并在触发器部分分配Lambda函数。这样Cognito就可以直接给Lambda打电话——Lambda不需要听任何特殊事件。谢谢您直截了当的回答!我会尝试一下,然后再给你回复。一般来说,我是否总是需要在AWS配置中指定我的区域以及每个lambda函数的特定api版本?此外,我认为在处理程序函数上方调用“var AWS=require('AWS-sdk')”之类的语句。是否应该在处理程序函数中调用它们?如果要访问特定于某个区域的服务,只需指定一个区域。在本例中,您访问的是DynamoDB,它需要一个区域。您不必指定版本。AWS总是在他们的例子中这样做,所以我想这一定是一个很好的实践。我想如果您不指定一个版本,您将来可能会遇到代码意外中断的风险。