【问题标题】:Best AWS way to update S3 bucket daily?每天更新 S3 存储桶的最佳 AWS 方式?
【发布时间】:2021-09-13 11:15:21
【问题描述】:

这是当前架构:

  • 用户数据保存到 DynamoDB 中
  • 统计数据保存到 S3(25000 个 JSON 对象,65KB/对象)
  • 应用通过 Lambda 与 DynamoDB 对用户进行身份验证
  • 应用从 API 网关端点读取统计信息,这会触发从 S3 读取并返回的 lambda(每次一个 S3 对象)。
  • 统计数据需要更新,我有一个被动更新逻辑。每次 lambda 从 S3 读取数据时,我都会检查 MetaData,如果它已过时,则覆盖现有的。

一切正常,但现在需求发生了变化。

  • 我们需要每天对所有 25000 个对象进行一些分析。
  • 必须在更新完所有 25000 个 JSON 对象后进行分析

最好的 AWS 方法是什么?

我只是想:

  1. 有一个预建列表,
  2. 然后每天使用 lambda 将所有更新命令推送到 SQS(由 EventBridge 触发),然后,
  3. 依次触发 lambda 处理器以逐一更新 S3 对象。
  4. 队列为空时,使用AWS Athena进行分析,
  5. 将结果保存到 DynamoDB 表中,完成。

有没有更好的方法,使用 lambda 将 25000 条消息推送到 SQS 是否太多?会需要很长时间吗?我将处理 lambda 中的重复消息,因此可以使用标准队列。

【问题讨论】:

  • 您可以查看 S3 批量操作 - 如果它始终是相同的对象,那可能会有所帮助。
  • 您是说每天有 25,000 个 对象到达,还是这些对象每天都停留在更新? “更新这些对象”是什么意思? Amazon S3 中的对象无法编辑,只能被覆盖。为什么要在 S3 中保留 25,000 个对象而不是使用数据库?每个文件有多大?您能告诉我们更多关于您实际在做什么,以便我们提供更合适的答案吗?如果不了解为什么你在做这些活动,就很难给出建议。
  • @JohnRotenstein 感谢您的回复。它正在覆盖。每个文件大概60KB,不想保存到DB,保存VPC相关的东西头疼,觉得不需要。用户保存到 DynamoDB 中,数据进入 S3,不涉及数据库。 :)
  • 您能否详细说明“用户保存到 DynamoDB 并且数据进入 S3”的含义?此过程当前是否有效,或者您是否在询问如何将数据从 DynamoDB 获取到 S3?如果数据已经在 DynamoDB 中,为什么要将其导出为 25,000 个单独的对象? (请编辑您的问题以添加更多详细信息,而不是在 cmets 中回答。)
  • 感谢更新:) @JohnRotenstein

标签: amazon-web-services amazon-s3 aws-lambda amazon-sqs


【解决方案1】:

你好像在问:

  1. 如何在 S3 中查询 25,000 个 JSON 文件,以及
  2. 在进行查询之前如何强制更新所有这些文件。

Amazon Athena 应该适合 #1。每次查询的成本约为25,000 x 60Kb x $5/TB = $0.0075。可以通过以压缩的 gzip 格式保存或使用 JSON 文件以外的其他文件来降低此成本。您可以测试对当前(过时)文件的查询,以确认它是否按预期工作。我建议在文件子集(例如 100 个文件)上对其进行测试,以确认它可以执行您想要的操作。

您对 25,000 个文件强制更新的计划似乎不错,这可能涉及将 25,000 条消息推送到 Amazon SQS 队列中,然后触发 AWS Lambda 函数。您可以编写函数来处理最多 10 个批处理大小的多条消息,或者将批处理大小限制为 1 并在每个函数执行时处理一条消息。

所需时间取决于处理每个 JSON 文件所需的时间,但 Lambda 函数可以并行运行(默认情况下最多 1000 次并发执行,但能够爆发更高,请参阅:AWS Lambda quotas)。我建议您先在文件子集上对其进行测试(例如,从队列中的 10 或 100 条消息开始)。

发送到 Amazon SQS 队列的消息数量没有限制。

【讨论】:

  • 感谢详细信息,特别是这里的价格计算,正在考虑节省拼花地板。对于计算,25000*65KB = 1625000KB = 0.001625TB,X $5/TB = $0.008125 每个查询?
  • 噢,我的错误! KB -> MB -> GB -> TB÷ 1024^3,使其每次查询低于 1c。去吧!最有效的格式是 Snappy 压缩的分区 Parquet。见:Analyzing Data in S3 using Amazon Athena | AWS Big Data Blog
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 2021-01-07
  • 1970-01-01
  • 2018-05-05
  • 2017-09-23
  • 1970-01-01
  • 2020-12-12
相关资源
最近更新 更多