这个问题可能是由于在用户确定后,Cognito没有正确设置更新用户表。以下是更新用户表的代码示例:
使用AWS Lambda函数来获取此更改并更新用户表。创建Lambda函数并将其绑定为Cognito用户池的后确认触发器。代码示例:
exports.handler = function(event, context, callback) { const AWS = require('aws-sdk'); const ddb = new AWS.DynamoDB(); const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({region: 'aws-region'}); var response = { "statusCode": 200, "headers": { "Content-Type": "application/json" }, "body": "{"result": "Success."}" }; var params = { UserPoolId: event.userPoolId, AttributesToGet: ['email'], Filter: 'sub = "'+event.request.userAttributes.sub+'"' }; cognitoidentityserviceprovider.listUsers(params, function(err, data) { if (err) { console.log(err, err.stack); callback(err); } else { var params = { Item: { 'email': {S: data.Users[0].Attributes[1].Value}, 'sub': {S: data.Users[0].Username}, '__typename': {S: 'User'} }, TableName: 'UserTable-name' }; ddb.putItem(params, function(err, data) { if (err) { console.log(err, err.stack); callback(err); } else { console.log(data); callback(null, event); } }); } }); };
在Amazon Cognito控制台中配置Lambda触发器以在用户确认后运行Lambda函数。
在应用程序中对其进行测试,然后检查DynamoDB表以查看用户是否已添加。
注意:将代码示例中的'aws-region”和'UserTable-name”替换为您的AWS区域和表名。该代码示例假定您的用户池使用电子邮