【问题标题】:process files put into s3 bucket in AWS lambda in the order in which they were put按放置顺序处理放入 AWS lambda 中的 s3 存储桶中的文件
【发布时间】:2018-08-10 02:14:37
【问题描述】:

我目前的工作流程如下:

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

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

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

SQS 的问题是标准 SQS 队列不遵守顺序,FIFO SQS 队列与 S3 不兼容(参考:Error setting up notifications from S3 bucket to FIFO SQS queue due to required ".fifo" suffix

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

谢谢,

斯瓦加提卡

【问题讨论】:

  • 我想处理文件,以便首先处理最先放置的文件。 为什么?在大型分布式系统中,“第一”是一个变得模糊的概念。
  • 有人有解决方法吗?陷入了同样的情况。
  • 我们提出了解决方案,其中 s3 事件触发 dummy lambda -> dummy lambda 处理事件并写入 SQS -> SQS 将消息排队。 cloudwatch 事件每 15 分钟激活一次,并触发主 lambda。此 lambda 接收 cloudwatch 事件并轮询 sqs 以获取任何消息。如果有,它会拾取最旧的消息并进行处理。

标签: amazon-web-services amazon-s3 aws-lambda amazon-sqs


【解决方案1】:

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

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

【讨论】:

  • FIFO SQS 还不能触发 lambda(截至今天)
猜你喜欢
  • 2016-05-15
  • 2020-03-29
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多