You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动检测AWS Lambda超时并触发另一个Lambda?

解决Lambda异步调用超时后EventBridge规则不触发的问题

核心问题分析

你监听的Lambda Function Invocation Result - Failure是同步调用的失败事件,而你的Executor是被异步调用的——默认情况下Lambda不会将异步调用的失败事件发送到EventBridge,且异步失败事件的detail-type与同步场景完全不同。

分步解决步骤

1. 开启Executor Lambda的EventBridge异步事件发送

进入Executor Lambda函数控制台:

  • 切换到「配置」标签页,选择「异步调用」
  • 在「事件」板块,勾选「将事件发送到 EventBridge」并保存
    这是关键前提,默认异步调用的结果事件不会流入EventBridge,必须手动开启该配置。

2. 修改EventBridge规则的事件模式

异步调用超时的事件格式与同步场景有差异,更新规则为以下内容:

{
  "source": ["aws.lambda"],
  "detail-type": ["Lambda Function Invocation Result - Asynchronous Failure"],
  "detail": {
    "functionName": ["lambda-function-name"],
    "errorType": ["Lambda.ClientExecutionTimeoutException"]
  }
}
  • 注意detail-type改为Lambda Function Invocation Result - Asynchronous Failure,匹配异步调用的失败事件类型
  • 异步超时对应的errorType实际是Lambda.ClientExecutionTimeoutException,而非你之前使用的TimeoutError(该值为同步超时的错误类型)

3. 验证事件是否生成

  • 手动触发Executor超时(比如在代码中加入time.sleep(901),超过15分钟的Lambda上限)
  • 进入EventBridge控制台的「事件」页面,搜索source:aws.lambda且detail.functionName:lambda-function-name的事件,确认异步失败事件是否正常生成

4. 额外排查点

  • 确认规则绑定的是默认事件总线(Lambda异步事件默认发送到默认总线)
  • 检查Executor函数的IAM角色是否包含events:PutEvents权限(开启EventBridge事件发送时会自动添加,但自定义角色需手动确认)
  • 如果调用Executor时使用了别名或版本,functionName需要填写完整名称(例如lambda-function-name:prod)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:25:02