AWS与RDS DB共享Cognito用户ID?

时间:2018-03-15 23:35:16

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

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

举个例子,假设我的RDS中有一个表格如下: -

id
review
creator_id

id 是INT主键,审核是varchar, creator_id 是创建它的用户的外键。< / p>

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

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

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

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

考虑到这一点的唯一潜在缺点是使用联合身份的情况,并且由于我的应用程序没有获取从Facebook,亚马逊等处获取的属性数据的更改,我自己的用户记录变得陈旧。

虽然这被认为是一种常见的情况,但我似乎找不到任何实际解决方案的实际例子。

1 个答案:

答案 0 :(得分:1)

我确实有类似的情况,但没有使用RDS:我有用户,想要将它们移到Cognito中,但是还有其他一些用户需要记录。以下是我的解决方案我不知道你是否想要去这条路线(假设p1是Cognito终点,而p2是其他数据相关的终点,例如RDS):

  1. 旧用户:我使用Boto3 AWS library而不是使用AWS的CLI,编写脚本来获取用户列表;并将它们推入p2(Boto also supports RDS client)。现在有两件事,一件是你需要编写Python脚本,但它很容易上手;并且方法调用是非常声明的。第二件事是,你必须要小心你在做什么;如果你在这里删除的东西;通过糟糕的书面代码;你无法扭转它。因此,我建议先制作一个虚拟的Cognito用户池和数据库并对其进行测试,然后触摸生产代码。

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