首页 > 解决方案 > 按放置顺序处理放入 AWS lambda 中的 s3 存储桶中的文件

问题描述

我目前的工作流程如下:

用户将文件放入 s3 存储桶 -> s3 存储桶触发事件到 lambda -> lambda 处理 s3 存储桶中的文件。它还调用其他 lambda。

我想处理多个用户同时将文件放入 s3 存储桶的场景。我想处理文件,以便首先处理文件。为了处理这个问题,我希望 lambda 在 15 分钟内处理每个文件(例如)。

所以,我想使用 SQS 对输入文件放置事件进行排队。S3 可以向 SQS 触发事件。一个 cloudwatch 事件可以每 15 分钟触发一次 lambda,该 lambda 可以轮询 SQS 队列中的第一个 s3 文件丢弃事件,并对其进行处理。

SQS 的问题是标准 SQS 队列不遵守顺序,并且 FIFO SQS 队列与 S3 不兼容(参考:设置从 S3 存储桶到 FIFO SQS 队列的通知时出错,因为需要“.fifo”后缀

我应该使用什么方法来解决这个问题?

谢谢,

斯瓦加提卡

标签: amazon-web-servicesamazon-s3aws-lambdaamazon-sqs

解决方案


您可以让 Amazon S3 触发 AWS Lambda 函数,然后将文件信息推送到 FIFO Amazon SQS 队列中。

SQS 可以触发 Lambda 有一项新功能,但您必须进行试验以了解该功能如何/是否适用于 FIFO 队列。如果它运作良好,那可以消除“15 分钟”的事情。


推荐阅读