我有一个架构设计,我使用 Cognito 进行用户管理(电子邮件、电话号码是唯一的属性),然后我使用 DynamoDB 同步用户,以便我可以让 AppSync 的用户查询和获取一些用户信息。
我需要某种方式将 DynamoDB 用户与 Cognito 用户同步。目前,我有一个用户 postConfirmation lambda 触发器,用于在新用户确认后运行插入到 DynamoDB 中的所有上述信息,但是:
保持 Cognito 和 DynamoDB 同步的理想架构是什么?
最佳答案
我有同样的问题。作为注册过程的一部分,我将电子邮件、family_name 和 given_name 存储在 cognito 中。然后用户可以随时更改这些字段中的任何一个。
我找不到跟踪这些更改的方法,因为文档没有说明同步事件的任何此类 lambda 触发器。但是,由于idToken
在我的情况下包含用户属性,它必须在用户进行更改后自行更新。所以我对此进行了测试,发现只要用户属性发生变化,就会调用 Pre-Token 触发器,以便它可以重新生成新的 token 。该 lambda 包含以下有效负载
{
version: '1',
triggerSource: 'TokenGeneration_RefreshTokens',
region: 'XXX',
userPoolId: '',
userName: 'XXX',
callerContext: {
awsSdkVersion: 'aws-sdk-unknown-unknown',
clientId: 'XXX'
},
request: {
userAttributes: {
sub: 'XXX',
email_verified: 'false',
'cognito:user_status': 'CONFIRMED',
'cognito:email_alias': 'user1@mailinator.com',
given_name: 'Name',
family_name: 'New',
email: 'user1@mailinator.com'
},
groupConfiguration: {
groupsToOverride: [],
iamRolesToOverride: [],
preferredRole: null
}
},
response: { claimsOverrideDetails: null }
}
所以我在这个 lambda 本身中更新了 dynamodb 中的记录。我不是 100% 确定,因为文档没有说明这个用例和预 token 触发器。试试看。Originally Posted here
关于amazon-web-services - 如何将 AWS Cognito 用户与 DynamoDB 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63148897/