如何将 AWS Cognito 用户池用户存储在数据库(例如 DynamoDB)中?

How to store AWS Cognito User Pool users in DB (for instance DynamoDB)?

对我来说,看起来 'AWS Cognito' 就是 'IdentityServer of AWS'。我做了一个 POC - 通过注册 API 电话创建了用户。用户在 AWS Cognito 用户池中创建并返回访问令牌。但是,为了关联事物,我想在 DynamoDB 中的用户 table 中创建用户,而不是在用户池中。

预期情况:

1) 新用户 --> 注册 --> AWS Cognito --> 在 DynamoDB 中添加一条新用户记录 --> AWS Cognito 返回访问令牌

2) 现有活跃用户 --> 登录 --> AWS Cognito --> 从 DynamoDB 检索用户详细信息 --> AWS Cognito 返回访问令牌

Qn -1:类似于在 SQL 服务器数据库 table 中创建 IdentityServer 用户。这可以在 AWS Cognito 中完成吗?是否可以绕过用户池,从数据库中获取用户数据?即使没有绕过,用户池是否可以从数据库映射其用户 table?

Qn - 2:用户池用户存储在哪里?最终在数据库中的某个地方?

注意:下面的问题和我的很像,但是还没有回答:

User sessions and storing aws cognito users in local DB

在您的方案中无法绕过用户池。但是,您可以将您的用户映射到 dynamoDB,甚至可以使用 custom policy 限制访问。要使用此策略,您必须构建 DynamoDB table,以便 Cognito 用户 ID 是分区键。

只需添加一个 lambda 触发器 post 注册并登录即可将用户添加到 dynamoDB。添加除密码之外的任何内容,因为您可以使用 cognito 进行身份验证,然后通过 cognito ID 限制行访问。

至于你问题的第二部分,cognito 有它自己的内部 table。 AWS 没有具体说明他们使用的是什么,但由于自定义属性的灵活性,我猜测它是 NoSQL。