Lambda Scheduled Trigger运行异常,执行间隔不符求助
这种调度不准的情况我之前在项目里碰到过好几次,结合AWS EventBridge(原CloudWatch Events)和Lambda的特性,大概率是下面几个原因导致的,你可以按顺序排查:
1. 定时表达式(Cron/rate)配置错误
这是最常见的问题,CloudWatch EventBridge的定时表达式有严格的格式要求:
- 每20分钟执行的正确Cron表达式应该是
*/20 * * * ? *(注意最后一位的?,因为CloudWatch要求日和星期字段必须有一个为?,避免时间冲突) - 如果你用
rate(20 minutes)格式,也要确认拼写正确,没有多余空格或错误单位
另外要注意时区问题:EventBridge默认使用UTC时区,如果你的业务基于本地时区(比如北京时间)但规则没设置对应时区,实际执行时间会和预期偏移,甚至夏令时切换时可能出现间隔异常。你可以在规则配置的“时区”选项里指定对应时区,比如Asia/Shanghai。
2. Lambda执行错误导致的重试机制触发
如果你的Lambda函数执行时出现超时、依赖服务不可用、代码异常报错等情况,EventBridge会触发默认的重试策略:
- 异步调用Lambda时,EventBridge会自动重试2次,重试间隔采用指数退避(比如第一次重试在1分钟后,第二次在2分钟后)
- 这就会导致你看到“1分钟内执行2-3次”的情况——本质是第一次执行失败,后续重试触发了重复执行
排查方法:去Lambda的CloudWatch日志里查看执行记录,搜索ERROR或Timeout关键词,确认是否有失败的执行实例。
3. 并发限制或节流导致执行延迟
如果你的Lambda函数并发数被打满(比如默认并发限制是1000,或者你手动设置了更低的阈值),新的EventBridge触发请求会被节流,导致执行时间被推迟,甚至间隔数小时才执行。
排查方法:
- 去Lambda控制台的“监控”页面查看“并发”指标,看是否有节流(Throttles)的情况
- 如果确实是并发不足,可以申请提高并发限制,或者优化函数的执行效率减少资源占用
4. 重复创建了多个相同的定时规则
有时候不小心会创建多个目标指向同一个Lambda的定时规则,比如两个规则都是每20分钟执行,就会导致执行次数翻倍,甚至因为规则触发时间的微小偏差,出现短时间内连续执行的情况。
排查方法:去EventBridge控制台,筛选所有目标为该Lambda的规则,检查是否有重复的定时配置。
5. EventBridge规则的状态或配置变更
如果规则曾经被暂停过又重新启用,或者修改过触发条件(比如从定时改成事件模式又改回来),可能会导致调度逻辑出现临时混乱,出现间隔异常。
另外,要确认规则的“状态”是启用的,没有被意外禁用。
6. 极端情况:AWS服务临时抖动
虽然AWS的服务可靠性很高,但偶尔还是会出现区域级的临时抖动,导致EventBridge的调度出现偏差。这种情况非常少见,你可以查看AWS对应区域的服务状态确认是否有相关故障记录。
内容的提问来源于stack exchange,提问作者Manoj Acharya

