首页 > 解决方案 > 定期从 AWS S3 读取并发布到 SQS

问题描述

我有一个包含不同文件的 S3 存储桶。我需要阅读这些文件并为文件中的每一行发布 SQS msg。我不能使用 S3 事件,因为文件需要延迟处理 - 一个月后放入 SQS。

我可以编写一个调度程序来完成这项任务,阅读和发布。但是我可以为此目的成为 AWS 吗?AWS Batch 或 AWS 数据管道或 Lambda。?

我需要传递要读取和发布的数据的日期(文件名)。

编辑:要处理的数据量巨大

标签: amazon-web-servicesamazon-s3scheduled-tasksamazon-sqs

解决方案


我可以想出两种方法来完全使用 AWS 无服务器产品,甚至无需编写调度程序。

您可以使用S3 事件启动一个 Step Function等待一个月,然后再读取 S3 文件并通过 SQS 发送消息

再做一些工作,您可以使用 S3 事件触发 Lambda 函数,该函数将消息写入 DynamoDB,未来 1 个月的 TTL。当 TTL 过期时,您可以让另一个 Lambda 监听 DynamoDB 流,当有删除事件时,它会将消息发布到 SQS。(可以在此处找到有关此一般策略的很好的介绍。)

虽然第二种策略可能需要更多的努力,但您可能会发现它比使用 Step Functions 更便宜,具体取决于整体消息吞吐量以及 S3 上传是突发还是平滑分布。


推荐阅读