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

Hos*_*ari 3 amazon-sqs amazon-web-services aws-lambda

我有一个以 SQS 作为触发器的 lambda 函数。当 lambda 执行时,无论是否发生错误,它都会将作业放回队列中并创建一个循环。

  1. 我应该在 lambda 函数中返回一些内容来让 SQS 知道我收到了消息(完成了工作)吗?我该如何确认消息?据我所知,SQS 中没有 ack 和 nack。

  2. SQS 配置中是否有任何选项可以在任何作业失败时仅重试 N 次?

fed*_*nev 5

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

文档:Amazon SQS 支持死信队列,其他队列(源队列)可以将其作为无法成功处理(使用)的消息的目标。

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