AWS EventBridge规则触发两次。

8

我在AWS EventBridge中有一个基于CRON的规则。
事件计划是cron(0 16 * * ? *),每天在UTC时间16:00触发Lambda函数。

第一次创建此规则时,它触发了一次Lambda - 这很好。
但是当我编辑cron表达式后,它开始在16:00触发2个事件。
我删除了此规则并创建了一个新的规则,但它也会在16:00触发2个事件。

对Lambda函数进行的监控显示它每天大约在16:00执行2次: enter image description here


这是该规则的CloudWatch: enter image description here


总结一下,我的规则应该触发1个事件,但实际上却触发了2个事件。有任何想法为什么会出现2个事件?
看起来像是AWS EventBridge的一个bug。


请检查您的目标,可能存在两个lambda函数。 - Lamanus
@Lamanus 只有一个目标,即提到的 Lambda 函数。 - nickolay.laptev
AWS表示在极少数情况下可能会出现重复事件,但我的情况并不罕见。详见https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-troubleshooting.html#rule-triggered-more-than-once。 - nickolay.laptev
1个回答

16
问题在于我的Lambda函数运行时间超过了15秒。然而,我已经将最大允许持续时间设置为15秒,并且重试计数(在Lambda中出现错误的情况下)设置为2。
因此,以下情况发生:
  1. AWS EventBridge触发我的Lambda一次。
  2. Lambda在16秒内执行。其中包含所有的业务逻辑。
  3. 最终Lambda超时(超过15秒),并返回错误代码。
  4. 错误触发相同Lambda的重复调用。
  5. 重复调用Lambda不到15秒就完成了。
  6. 我的业务逻辑被执行了两次。
解决方案是增加超时时间限制。 FYI
我在Lambda监控仪表板中找到了错误,在CloudWatch中观察Lambda日志并看到“任务在15.01秒后超时”的消息后才发现这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接