重新启用后 AWS Lambda 事件源映射的行为

问题描述 投票:0回答:2

我有一个 AWS Lambda 函数,配置了来自 SQS 队列的事件源映射。我最近使用 update_event_source_mapping 方法禁用了事件源映射,并将 Enabled 参数设置为 False。在此禁用期间,新消息被添加到 SQS 队列中。

现在,我计划使用相同的方法重新启用事件源映射,并将 Enabled 参数设置为 True。但是,我不确定重新启用后 Lambda 函数的行为:

在禁用事件源映射期间,Lambda 函数是否会处理队列中已有的消息? 或者它只会在重新启用事件源映射后处理添加到队列中的新消息? 我已经阅读了AWS文档,但找不到针对这种情况的明确答案。有人可以澄清 AWS Lambda 在这种情况下如何处理事件源映射吗?

任何见解或指导将不胜感激。谢谢!

amazon-web-services aws-lambda amazon-sqs
2个回答
0
投票

Lambda 将再次开始轮询 SQS 队列,并将处理队列中的任何可用消息。 Lambda 不关心消息何时添加到 SQS 队列,它只是轮询队列以查找任何可用消息。


0
投票

事件源映射器将从标准 SQS 队列中读取任何消息并触发 lambda 函数。它不会区分新的或禁用之前的。保留期限将决定哪些消息仍可供处理。默认 SQS 保留期为 4 天,可配置在 1 分钟到 14 天之间。

使用 SQS FIFO 队列,您将能够接收最后一条未处理的消息。

以防万一,由于禁用事件源映射的延迟而导致消息丢失或未正确处理:请查看 SQS 上配置的死信队列 (DLQ)。由于这种组合称为同步 - 将使用 SQS 上的 DLQ,而不是 Lambda 的 DLQ。

顺便说一下,2024 年 2 月,基于队列的事件源的响应能力得到了改进,更新、禁用或删除 ESM 在 90 秒内生效,比之前最多 15 分钟的时间范围有所改进。 AWS Lambda 提高了配置基于流和队列的事件源的响应能力

© www.soinside.com 2019 - 2024. All rights reserved.