AWS EventBridge自定义事件测试投递成功但未触发Lambda目标求助
解决EventBridge测试事件显示投递成功但Lambda未触发的问题
先查核心配置问题
- 核对规则的事件匹配模式
测试工具发送的事件得完全贴合规则的过滤条件,比如事件源、detail-type、detail字段的匹配规则。直接把测试用的事件JSON复制到规则的「测试事件模式」功能里验证,看能不能匹配上。 - 确认Lambda的权限配置
EventBridge得有调用Lambda的权限才行:- 去Lambda的资源策略里检查,有没有包含EventBridge的服务主体
events.amazonaws.com,并且允许lambda:InvokeFunction操作,资源填你的Lambda ARN。
参考策略(替换成你的Lambda ARN):
{ "Version": "2012-10-17", "Id": "EventBridgeInvokeLambda", "Statement": [ { "Sid": "Stmt123456789", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:YourLambdaFunction" } ] } - 去Lambda的资源策略里检查,有没有包含EventBridge的服务主体
- 确认规则绑定的事件总线
别搞混了总线!确保规则绑定的是你测试时使用的那个总线(默认总线或者自定义总线)。
用测试工具做精准调试
- 带追踪ID发送测试事件
在测试事件的detail里加个唯一的trace-id,比如:
发送后去EventBridge的「事件历史」里搜索这个{ "source": "your.custom.source", "detail-type": "your.detail.type", "detail": { "trace-id": "test-20240520-001" }, "region": "us-east-1" }trace-id,查看事件流转状态:- 若显示「已匹配规则但投递失败」,直接查看失败原因(比如权限不足、Lambda不存在)
- 若显示「未匹配规则」,说明规则的过滤模式有误
- 检查Lambda的CloudWatch日志
直接去CloudWatch Logs里找到Lambda的日志组,搜索刚才的trace-id:- 没找到任何日志?说明EventBridge根本没触发Lambda
- 有错误日志?照着提示修复即可(比如Lambda执行报错导致重试失败)
其他常见坑
- Lambda的并发/触发限制
检查Lambda是否设置了并发上限,或者EventBridge规则里是否添加了触发速率限制,要是有这类限制,可能事件被节流了。 - 测试事件格式错误
确保测试事件的JSON格式合法,字段名要加引号、逗号不要遗漏。EventBridge测试工具会自动修正部分格式,但复杂嵌套的detail字段容易出问题,仔细检查。
内容的提问来源于stack exchange,提问作者Mark P
相关产品推荐
相关产品推荐

