S3 还是 DynamoDb 用于用户存储?

Jus*_*tin 2 amazon-s3 amazon-web-services amazon-dynamodb amazon-cognito serverless-architecture

我想在无服务器架构中使用 AWS Lambda 和 Cognito,并且好奇人们的想法是将 S3 存储桶用于用户数据存储,而不是像 DynamoDb 这样的东西?有什么优点/缺点?

Ash*_*han 6

您可以根据不同类型的用户数据和查询需求使用一种或两种。此外,您还可以在 Cognito Sync 存储中保留基本的用户配置文件数据。

AWS S3

  • 它是一种完全托管的文件存储和检索服务。
  • 非常适合存储用户个人资料图片、文件上传等。
  • 您可以将用户属性存储在 JSON 文件或多个文件中。挑战之一是您需要检索整个文件甚至读取单个属性或保存整个文件以保存单个属性。
  • 需要建立文件名约定来直接查找文件以加快检索或列出文件并读取每个文件以查找内部内容,这在性能上是昂贵的。
  • 与 Dynamodb 相比,这在成本方面是更便宜的选择。
  • 不适合存储会影响应用程序性能的动态变化的用户数据。

AWS 动态数据库

  • 它是一个完全托管的 NOSQL 数据库
  • 建议存储用户属性以便快速查询、更新和检索。
  • 内置查询支持和条件更新。
  • 可以进行部分更新。
  • 适用于需要查询多个用户并更新的情况。
  • 一般比S3贵。

通过将文件存储在 S3 和文件元数据中以及在 Dynamodb 中频繁查询属性以进行快速查询,将它们一起使用以最大限度地利用成本和性能是一种常见模式。您还可以设置事件驱动模式以根据 S3 中的更改更新 Dynamodb。