同步RDS DB和Cognito的最佳方法

问题描述 投票:0回答:3

我在所有AWS Tools BTW中都是新手。无论如何,我已经创建了Cognito用户池,可以创建和登录新用户,但我的RDS数据库中也需要这些字段。

昨天,我正在阅读有关该问题的文档和教程,但是看起来有很多方法可以同步两个数据源。我不知道是否像AppSync这样的选项可以执行此操作,或者我需要编写一个两步的lambda,所以我正在为像你们这样的更有经验的用户寻求建议。

amazon-web-services amazon-cognito
3个回答
2
投票

您只能在cognito用户池中具有身份验证所需的基本属性,例如用户名,名称,电子邮件和电话号码,以及其他某些数据库(例如RDS或DynamoDB)中的其余元数据。在dynamo或RDS中,您可以在cognito中创建用户名和其余元数据的一对一映射。例如:

*username* -> pk
employee_id
address
user_type
first_name
last_name
marital_status
gender

从实现的角度:公开lambda以创建和更新用户。仅使用先前使用cognito API定义的必需属性在cognito中创建用户,然后将该用户的元数据插入您选择的数据库中。 PUT API也是如此,只是稍有变化,您将必须更新数据库中的用户池和用户元数据。


1
投票

您可以将AWS AppSync Lambda解析器与Cognito用户池一起用作AppSync API的AuthZ选择,以满足您的用例。本质上,当用户使用cognito完成身份验证时,您将拥有包含用户属性的“ $ context.identity.claims”,并且可以在lambda解析器内部写入RDS数据库。

一些参考文档:


1
投票

简短回答:

您可以通过侦听Cognito事件(例如,使用AWS Lambda)将Cognito用户池数据复制到SQL表中。

长回答:

我认为您可以将Cognito用户池用作身份验证/用户数据Bounded Context,换句话说,就是身份验证和用户数据的唯一真实来源。

以及其他需要用户数据的BC(例如Sales上下文)可以使用某种数据复制体系结构以只读方式同步用户数据,以进行内部复杂查询,或者仅与Cognito分离。

在这种情况下,数据复制的一个示例可能是侦听Cognito事件(AWS Lambda可以帮助其完成),以将用户数据复制到Bounded Context(恰好是该上下文所需数据的一部分)。

但是请记住,复制的数据是只读的,原始的Cognito数据应该是真实的唯一来源。

© www.soinside.com 2019 - 2024. All rights reserved.