AWS Lambda按每分钟调度却偶发几秒内重复触发问题排查
AWS Lambda 每分钟调度异常:短间隔重复触发的原因与排查方案
可能的原因分析
- 重复的EventBridge定时规则:这是最常见的诱因。如果Serverless部署过程中出现异常(比如多次部署未清理旧资源),或者配置文件中误定义了多个指向同一Lambda的定时规则,会导致同一分钟内多次触发函数。
- EventBridge规则配置失误:虽然
rate(1 minute)和cron(* * * * ? *)都是每分钟触发的正确表达式,但如果规则的触发条件被意外修改(比如添加了额外事件源),或者规则被重复启用,可能引发异常调度。 - Lambda执行异常触发的重试:如果函数执行初期出现瞬时错误(比如初始化失败),EventBridge可能触发重试,但这种情况的重试间隔通常远大于3秒,且次数受重试策略限制,不符合你遇到的场景。
排查与解决步骤
- 检查EventBridge规则列表
登录AWS控制台,进入EventBridge → 规则,搜索与sendXXX函数关联的规则,确认是否存在多个重复规则。若有,直接删除多余规则即可。 - 定位触发事件的来源
在CloudWatch日志中,找到两次触发的日志条目,查看EventBridge传递的事件内容(日志中会包含ruleArn字段),确认两次触发是否来自同一规则。若来自不同规则,定位并删除重复配置。 - 验证Serverless部署配置
检查serverless.yml是否存在多个events配置块指向同一Lambda的定时触发。比如:
若存在重复的functions: sendXXX: handler: handler.sendXXX events: - schedule: rate(1 minute) # 误添加的重复调度配置 - schedule: cron(* * * * ? *)schedule事件,删除多余项后重新部署。 - 查看EventBridge触发历史
在EventBridge规则详情页的「触发历史」标签下,确认触发事件的时间和次数,是否存在异常重复记录。若规则本身调度异常,可尝试删除并重新创建规则。 - 排除Lambda并发影响
你的问题并非由并发执行直接导致——预置并发(Provisioned Concurrency)仅负责提前初始化函数实例,不会改变触发频率。移除预置并发后问题依旧,也验证了这一点。
总结
短间隔重复触发的核心原因几乎都是多规则重复配置,通过排查EventBridge规则列表和Serverless配置即可解决。若排查后仍有问题,可尝试删除现有规则并重新部署,确保仅保留一个定时规则指向目标Lambda函数。
内容的提问来源于stack exchange,提问作者Zolbayar
相关产品推荐
相关产品推荐

