AWS Lambda - SQS 与指数退避的集成

AWS Lambda - SQS Integration with Exponential Backoff

我有一个由 SQS 事件触发的 AWS Lambda (python)。如果 lambda 失败,SQS 会根据重试设置重试。如何更改重试设置以启用指数退避?

如果您使用 SQS 触发器,我不确定您是否可以使用指数退避,因为在幕后,这本质上不是触发器。 Lambda 继续轮询 SQS 队列以获取消息。

SQS 将使消息在 Visibility Timeout 属性中定义的任何时间段内不可见,这意味着每次 Lambda 函数获取新消息时,都会在消息被其他消费者可见之前遵守此超时再次。

这给您留下了两个选择:

1) 不要使用 Lambda 触发器并自行轮询队列。请记住,如果是这种情况,您还必须手动删除消息。

2) 增加源 SQS 队列的可见性超时,使超时足以让潜在的故障系统恢复。

有关 Lambda 如何处理来自 AWS 服务的事件的更多信息,请参阅 docs