每天更新 S3 存储桶的最佳 AWS 方式?

Best AWS way to update S3 bucket daily?

这是当前架构:

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

最好的 AWS 方法是什么?

我当时在想:

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

有什么更好的方法吗,使用lambda将25000条消息推送到SQS上是不是太过分了?会花很长时间吗?我将在 lambda 中处理重复消息,因此可以使用标准队列。

看来你问的是:

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

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

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

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

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