【发布时间】:2021-09-13 11:15:21
【问题描述】:
这是当前架构:
- 用户数据保存到 DynamoDB 中
- 统计数据保存到 S3(25000 个 JSON 对象,65KB/对象)
- 应用通过 Lambda 与 DynamoDB 对用户进行身份验证
- 应用从 API 网关端点读取统计信息,这会触发从 S3 读取并返回的 lambda(每次一个 S3 对象)。
- 统计数据需要更新,我有一个被动更新逻辑。每次 lambda 从 S3 读取数据时,我都会检查 MetaData,如果它已过时,则覆盖现有的。
一切正常,但现在需求发生了变化。
- 我们需要每天对所有 25000 个对象进行一些分析。
- 必须在更新完所有 25000 个 JSON 对象后进行分析
最好的 AWS 方法是什么?
我只是想:
- 有一个预建列表,
- 然后每天使用 lambda 将所有更新命令推送到 SQS(由 EventBridge 触发),然后,
- 依次触发 lambda 处理器以逐一更新 S3 对象。
- 队列为空时,使用AWS Athena进行分析,
- 将结果保存到 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