带有 SQS 触发器的 AWS lambda 不断重试并将作业放回队列中

AWS lambda with SQS trigger keeps retrying and putting job back in the queue

我有一个以 SQS 作为触发器的 lambda 函数。当 lambda 执行时,它要么抛出错误,要么不抛出错误。它会将作业放回队列中并创建一个循环,您肯定知道 AWS 账单:)

  1. 我是否应该 return 在 lambda 函数中添加一些东西让 SQS 知道我收到消息(完成任务)?我应该如何确认消息?据我所知,我们在 SQS 中没有 ack 和 nack。

  2. SQS配置中是否有任何作业失败时只重试N次的选项?

对于标准用例,您不必主动管理 lambda 和 SQS 之间的成功-失败通信。如果 lambda returns 在超时期限内没有错误,SQS 就会知道消息已成功处理。如果函数 returns 出错,则 SQS 将重试可配置的次数,最后将仍然失败的消息定向到死信队列(如果已配置)。

Docs: Amazon SQS supports dead-letter queues, which other queues (source queues) can target for messages that can't be processed (consumed) successfully.

重要提示:将您的 DLQ 添加到 SQS 队列,而不是 Lambda。 Lambda DLQ 是一种处理异步(事件驱动)调用错误的方法。