php - AWS 与 RDS 数据库共享 Cognito 用户 ID?

标签 php mysql amazon-web-services amazon-cognito

我正在开发一个基于 AWS 服务的 ReactJS/PHP 应用程序,我将使用 Cognito 进行身份验证。但是,我不明白如何将 Cognito 与我自己的用户表一起使用。

例如,假设我的 RDS 中有一个表,如下所示:-

id
review
creator_id

id 是 INT 主键,review 是 varchar,creator_id 是创建它的用户的外键。

假设我想执行一个关系查询,以通过 creator_id 外键从评论表中选择记录以及创建它的人的名字和第二名……而存储在我的 Cognito 数据库中的用户属于我无法(据我所知)看到任何将这些用户记录/表与我的 RDS 同步的“官方”方式。

在 Cognito 文档中它提到了 Lambda triggers .是否可以在我的 RDS 中拥有我自己的用户表并使用 migrate user 触发器将 Cognito 用户信息传递到 PHP 端点,该端点将使用自己的 PK 在 RDS 用户表中创建新记录,信息 Cognito 用户信息和识别它在 Cognito 用户池中的记录的“外键”?

或者,当然,我应该能够通过 AWS PHP SDK 控制 Cognito 用户池上的所有 CRUD 操作,我假设我可以在创建、更新或删除操作成功时更新我自己的表。根据Cognito docs .该应用程序可以为池中的用户创建一个唯一的用户名,我想它可以用作我自己的用户表中的唯一 ID: -

UPDATE users set this_field = 'whatever' WHERE cognito_id = 'whatever_the_unique_cognito_username_is'

想到的唯一潜在缺点是使用联合身份的情况,我自己的用户记录变得陈旧,因为我的应用程序没有获取从 Facebook、Amazon 等获取的属性数据的变化。

虽然这看起来是一个常见的场景,但我似乎找不到任何实际可行的示例来说明如何实现此解决方案。

最佳答案

我确实遇到过类似的情况,但 RDS 没有:我有用户,想将他们转移到 Cognito,但还有其他部分用户我想记录下来。以下是我的解决方案不知道你要不要走这条路(假设p1是Cognito端点,p2是其他数据相关端点,比如RDS):

  1. 老用户:我没有使用 AWS 的 CLI,而是使用了 Boto3 AWS library , 编写获取用户列表的脚本;并将它们插入 p2 ( Boto also supports RDS client )。现在有两件事,一是你需要编写 Python 脚本,但是很容易上手;并且方法调用非常明确。其次,您必须非常小心您所做的事情;如果你在这里删除了一些东西;通过糟糕的书面代码;你不能把它倒回去。因此,我建议先制作一个虚拟的 Cognito 用户池和数据库并对其进行测试,然后再接触生产代码。

  2. 新用户从此时开始:当用户注册时; api将用户添加到p1并将相关信息添加到p2。 p1 和 p2 之间的链接是用户的用户名 而不是id

关于php - AWS 与 RDS 数据库共享 Cognito 用户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49310976/

相关文章:

mysql - SQL 查询帮助 - 由于平均费用而无法运行

mysql - 选择与计算输出(另一个表的平均值)进行比较的值

mysql 错误说我有语法错误,但我不明白错误消息

amazon-web-services - EventBridge PutEvents 的基于标签的策略

amazon-web-services - 使用 AWS cloudformation 堆栈到 SNS 的事件目标无法正常工作

PHP: JSON解码问题

javascript - 将 HTML 表格转换为数组

PHP 数据 session 存储

node.js - 无法删除定义 Lambda 支持的自定义资源的 CloudFormation 堆栈

php - SQLite不支持drop; Laravel单元测试使用什么