我在AWS EventBridge中有一个基于CRON的规则。 事件计划是cron(0 16 * * ? *),每天在UTC时间16:00触发Lambda函数。 第一次创建此规则时,它触发了一次Lambda - 这很好。 但是当我编辑cron表达式后,它开始在16:00触发2个事件。 我删除了此规则并创建了一个新的规则,但它也会在16:00触发2个事件。 对Lambda函数进行的监控显示它每天大约在16:00执行2次: 这是该规则的CloudWatch: 总结一下,我的规则应该触发1个事件,但实际上却触发了2个事件。有任何想法为什么会出现2个事件? 看起来像是AWS EventBridge的一个bug。
问题在于我的Lambda函数运行时间超过了15秒。然而,我已经将最大允许持续时间设置为15秒,并且重试计数(在Lambda中出现错误的情况下)设置为2。 因此,以下情况发生: AWS EventBridge触发我的Lambda一次。 Lambda在16秒内执行。其中包含所有的业务逻辑。 最终Lambda超时(超过15秒),并返回错误代码。 错误触发相同Lambda的重复调用。 重复调用Lambda不到15秒就完成了。 我的业务逻辑被执行了两次。 解决方案是增加超时时间限制。 FYI 我在Lambda监控仪表板中找到了错误,在CloudWatch中观察Lambda日志并看到“任务在15.01秒后超时”的消息后才发现这个问题。