You need to enable JavaScript to run this app. AWS Lambda配置SQS触发器重试2次却重试10次才进DLQ是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda配置SQS触发器重试2次却重试10次才进DLQ是什么原因?

SQS触发Lambda异常重试次数不符合预期问题根因分析

核心前提澄清

Lambda控制台配置的「重试尝试:2」参数仅适用于Lambda异步调用场景,SQS触发Lambda属于事件源同步调用,该参数对当前场景完全不生效。SQS触发场景的重试规则优先级如下:

  1. 高优先级:Lambda SQS事件源映射中配置的「最大接收次数」
  2. 低优先级:SQS队列本身配置的「最大接收次数」(本次场景中为10)

之前业务正常的原因

你此前在Lambda的SQS事件源映射中配置了最大接收次数为3,即消息最多被Lambda接收处理3次(1次初始执行+2次重试),达到阈值后直接投递到DLQ,不会触发SQS队列本身的10次阈值。

近期异常的根因

  • 最常见原因:你近期修改过SQS事件源映射的配置,删除或修改了事件源映射层面的最大接收次数配置,导致重试规则回退到SQS队列本身的10次阈值。
  • 次要可能原因:Lambda函数近期更新了错误处理逻辑,出现静默失败情况(捕获了所有异常但没有重新抛出,也没有手动调用SQS API删除消息),Lambda服务判定函数执行成功,消息等待90分钟可见性超时后自动重新入队,接收次数累加。

15小时运行时长的逻辑匹配

SQS的默认可见性超时为90分钟,每次处理失败后消息会被锁定90分钟才会重新可见被消费,10次接收的总耗时约为 9次重试间隔 * 90分钟 + 10次Lambda最大执行时长15分钟 = 960分钟,和你观察到的15小时运行时长完全吻合。

修复方案

  1. 进入Lambda控制台「配置」-「触发器」页,找到对应SQS触发器,编辑后重新配置「最大接收次数」为3,即可恢复2次重试后投递DLQ的逻辑。
  2. 校验Lambda函数的错误处理逻辑,确保所有处理失败的场景都会抛出异常,不要静默吞错,避免Lambda误判执行成功。

内容的提问来源于stack exchange,提问作者Rafat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 15:48:00