AWS Cognito - 通过 Cognito API 使用和更新用户配置文件或同步到单独的数据库

Nig*_*gul 3 user-management mobile-application amazon-web-services amazon-cognito

我从 Cognito 和一个移动应用程序开始,其中以及其他核心功能,用户配置文件可以更新,并且池经常被查询。因此,我正在考虑以下选项:

  1. 直接从应用程序使用 Cognito API 查询池
  2. 使用 Cognito API 查询池 - 可能是管理功能?- 从后端 REST web 服务,基本上包装 Cognito API 以确保可移植性和没有供应商锁定

或者

  1. 完全不要将 Cognito 用于用户配置文件数据,而只能用于用户身份验证。在 MySQL 数据库中创建一个表,以用户 subs 作为 ID 和所有其他附加属性,如他们的网站、照片、文本/配置文件的描述等。在 Cognito 提供的 Lambda 触发器的帮助下填充它。

虽然在选项 1 和选项 2 之间进行选择是一种架构和战略决策,但由于我不确定使用 Cognito Pools 的方式,选项 3 出现了。

在了解AWS Cognito 的服务限制后,我来到了选项 3 。而且我知道这些是可以调整的,但是从允许每秒 5 次开始我想知道这是否会在某些时候成为瓶颈..

已经使用 Cognito 构建了高效应用程序的任何人:

  1. 您能否分享您在 Cognito 服务限制和 Pool API 性能方面的总体经验(不仅仅是登录/注册)?
  2. 将 Cognito 仅用于身份验证/授权还是用于完整的用户管理更好?

谢谢!

sta*_*kas 7

我们遇到了同样的情况尼基。我会推荐选项 3。其他 2 个选项会导致更多的麻烦。

  • 在某些时候,我们希望在我们的 lambda 表达式中为用户提供额外的数据,但这些数据不是 jwt 令牌的一部分。我们想知道用户的注册日期。收集它的唯一方法是触发其中一个管理 Cognito API - 工作正常 - 但是当流量显着增加时,我们的端点出现故障,因为我们达到了adminGetUser的限制。
  • 我们遇到的一个问题是,我们必须不断地进行从 Cognito 到 Cognito 的数据转换。检查 adminGetUser 的响应,您会发现这不是最好的响应。
  • 我还记得的另一件事是,当我们想为用户数据添加一个额外的字段并使用特定值填充它时,或者如果您有一个要求,您必须检索其中一个实体的列表,并且与用户一起加入它,因为您需要在响应中显示用户元数据。这将是一项极具挑战性的任务。
  • 一个简单的任务,您可能想要发送回带有分页和排序的用户列表,这可能有点挑战性。您可以列出Cognito中的用户,但不能进行排序。

总的来说,我真的很喜欢 Cognito 在身份验证、验证电子邮件、社交登录和应用程序客户端方面的简单性。出于这个原因,它是完美的,但我不会在 cognito 中为生产就绪环境保存用户元数据——除非它是一个小的概念证明。