[英]AWS Cognito - User profile usage and update via Cognito API or sync into separate database
[英]How to sync AWS Cognito user with DynamoDB
我有一個架構設計,我使用 Cognito 進行用戶管理(電子郵件、phone_number 是唯一的屬性),然后我使用 DynamoDB 同步用戶,這樣我就可以讓 AppSync 的用戶查詢和獲取一些用戶信息。
我需要某種方式來同步 DynamoDB 用戶和 Cognito 用戶。 目前,我有一個用戶 postConfirmation lambda 觸發器,用於在新用戶確認所有上述信息時運行插入 DynamoDB 但是:
保持 Cognito 和 DynamoDB 同步的理想架構是什么?
我有同樣的問題。 作為注冊過程的一部分,我將 email、family_name 和 given_name 存儲在 cognito 中。 然后用戶可以隨時更改這些字段中的任何一個。
我找不到跟蹤這些更改的方法,因為文檔沒有 state 任何此類 lambda 觸發同步事件。 但是,由於idToken
在我的例子中包含用戶屬性,因此它必須在用戶進行更改后自行更新。 所以我對此進行了測試,發現只要用戶屬性發生變化,就會調用 Pre-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% 確定,因為文檔沒有說明這個用例和預令牌觸發器。 試一試看看。
我會考慮不將這些詳細信息與 DynamoDb 同步。 您可以像查詢數據庫一樣查詢 Cognito 以查找/獲取用戶。 我們這樣做的方法是,我們使用 DynamoDb 用戶 ID 的 Cognito 子(id),以便為特定用戶從 DynamoDb 獲取數據變得非常容易。 db 表更像是一個補充信息表,就像您用來保存額外用戶數據一樣。 在我看來,這會容易得多——那么您就不需要處理與 email 更改相關的任何事情。
例如 - 我們有一個用於帳戶/用戶的管理員應用程序同步。 為了查找或以其他方式改變用戶,我們通常使用調用Cognito方法的 Lambda。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.