amazon-web-services - 定期从 AWS S3 读取并发布到 SQS
问题描述
我有一个包含不同文件的 S3 存储桶。我需要阅读这些文件并为文件中的每一行发布 SQS msg。我不能使用 S3 事件,因为文件需要延迟处理 - 一个月后放入 SQS。
我可以编写一个调度程序来完成这项任务,阅读和发布。但是我可以为此目的成为 AWS 吗?AWS Batch 或 AWS 数据管道或 Lambda。?
我需要传递要读取和发布的数据的日期(文件名)。
编辑:要处理的数据量巨大
解决方案
我可以想出两种方法来完全使用 AWS 无服务器产品,甚至无需编写调度程序。
您可以使用S3 事件启动一个 Step Function,等待一个月,然后再读取 S3 文件并通过 SQS 发送消息。
再做一些工作,您可以使用 S3 事件触发 Lambda 函数,该函数将消息写入 DynamoDB,未来 1 个月的 TTL。当 TTL 过期时,您可以让另一个 Lambda 监听 DynamoDB 流,当有删除事件时,它会将消息发布到 SQS。(可以在此处找到有关此一般策略的很好的介绍。)
虽然第二种策略可能需要更多的努力,但您可能会发现它比使用 Step Functions 更便宜,具体取决于整体消息吞吐量以及 S3 上传是突发还是平滑分布。
推荐阅读
- python - 通过 PyArrow 编写 Parquet MAP 数据类型
- javascript - 错误:Route.get() 需要回调函数,但在 app.js 中获得了 [object Undefined]
- sql - 使用 DATEDIFF 和 SQL 中的 dd-mm-yy 等日期形式计算两个日期
- python-3.x - python3抛出ImportError:没有名为concurrent.futures的模块
- node.js - 车把助手为每个帖子显示相同的日期
- sql - Azure 数据同步错误 - 成员数据库是只读的
- javascript - 如何在表单中使用 Ant 制定规则?
- python - 带有 PostGIS 的 GeoDjango - 距离计算错误
- laravel - 如何在laravel中定义多个belongsTo
- algorithm - 冒泡排序在 1 遍中完成的要求是什么?