【问题标题】:How to handle users data in an aws-based serverless stack如何在基于 aws 的无服务器堆栈中处理用户数据
【发布时间】:2017-01-31 05:33:16
【问题描述】:

我是 AWS 的新手,我有点迷茫。 我想要一个使用 Cognito 来处理身份验证、DynamoDB、Lambda 和 CloudFront 的无服务器堆栈来公开 REST 服务。

我不知道如何处理用户数据。例如,我想存储用户电子邮件和实际地址。我已经看到您可以直接在 Cognito 中使用它,但是,我想在设置/更新这些属性时执行自定义验证。

我可以通过触发器轻松做到这一点,让用户对其数据具有写入权限吗?

或者我是否应该限制对这些属性的写入访问并公开一个 REST 服务以在 lambda 中手动更新它们?

我还看到有人在 DynamoDB 中使用 users 表来存储一些数据,与直接使用身份池相比有什么优势?

谢谢,

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-lambda amazon-cognito


    【解决方案1】:

    您可以轻松地将此类数据(电子邮件、地址)存储在 Cognito 用户池中,并使用 PreSignUp Lambda 触发器 more details 验证数据。

    【讨论】:

    • 但是这样做,当用户更新其信息时,我如何检查数据,没有触发,是吗?
    • 很遗憾,没有,AWS 没有在注册完成后更新 Cognito 用户池属性的触发器。我总是在 API Gateway 和 Lambda 中构建一个 REST 服务来更新 Cognito。
    【解决方案2】:

    使用 DynamoDB 存储用户数据的优势在于,使用 Cognito 作为主要数据存储时,您几乎肯定会遇到 RequestLimitExceeded 异常。如果您联系 AWS 支持并解释您在做什么,他们将提高您账户的 Cognito API 限制 - 但这只能暂时解决问题。由于亚马逊没有发布会触发 RequestLimitExceeded 错误的内容,因此如果您的流量增加,您最终会再次遇到该错误。

    每次我尝试使用 Cognito 作为用户数据的唯一来源时,都会遇到这个问题。所以我最终将用户数据存储在 Dynamo 或 RDS 中。

    如果您没有大量流量,或者您不打算经常查询 Cognito API,那么它可能适合您

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 2023-04-05
      • 2020-11-30
      • 1970-01-01
      • 2020-03-03
      相关资源
      最近更新 更多