AWS CDK配置EventBridge触发Lambda无响应问题排查求助
问题排查与修复方案
1. 修正事件模式的DetailType匹配
你当前使用events.Match.equalsIgnoreCase("object created")进行大小写不敏感匹配,可能存在兼容性问题。S3发送到EventBridge的对象创建事件的标准detailType是**"Object Created"**(首字母大写),直接使用精确值替换即可:
new events.Rule(this, "InputBucketUploadRule", { description: "Watches for s3 object:put events.", eventPattern: { source: ["aws.s3"], detailType: ["Object Created"], // 替换为精确值 detail: { bucket: { name: [this.inputBucket.bucketName], }, }, }, targets: [new targets.LambdaFunction(transcribeHandler)], });
2. 确认Bucket的EventBridge集成已启用
虽然你在CDK中设置了eventBridgeEnabled: true,但需手动验证S3 Bucket的配置是否生效:
- 登录AWS控制台,进入目标InputBucket的属性页面
- 找到事件通知部分,确认发送到EventBridge选项已勾选
- 若未勾选,重新部署CDK栈以触发配置更新
3. 检查规则与Bucket的区域一致性
EventBridge规则是区域级资源,S3会将事件发送到Bucket所在区域的EventBridge。确保你的CDK栈部署区域与InputBucket的区域完全一致(由于Bucket在同栈创建,此情况通常不会出现,但需排除跨区域配置的可能性)。
4. 验证事件模式匹配有效性
使用EventBridge控制台的测试模式功能,验证你的规则是否能匹配S3对象创建的示例事件:
- 进入目标规则的编辑页面,选择测试模式
- 选择示例事件中的S3 > Object Created,点击测试模式
- 若匹配失败,说明事件模式仍存在问题,需进一步调整
5. 查看CloudWatch指标排查
- 进入EventBridge规则的指标页面,查看
MatchedEvents指标:若数值为0,说明事件未被规则捕获(问题在事件模式或Bucket配置) - 查看
Invocations指标:若MatchedEvents非零但Invocations为0,需检查Lambda的触发权限(CDK通常会自动配置,但可手动确认Lambda的资源策略是否允许EventBridge调用)
内容的提问来源于stack exchange,提问作者Sebastian Scholl
相关产品推荐
相关产品推荐

