使用boto3向AWS Event Bus发事件后CloudWatch无日志排查
无法在CloudWatch中找到EventBridge事件日志的排查方案
问题描述
我是AWS Event Bus服务的新手,尝试使用boto3库将事件发送回事件总线,put_events接口返回成功响应,但无法在CloudWatch中找到EventBridge相关事件日志。
实现代码
def handler(event, context): event_client = boto3.client('events') response = event_client.put_events( Entries=[ { 'Source': 'Lambda function get_distance_duration_from_bsig_file', 'DetailType': 'Distance and Duration calculated by bsig file', 'Detail': json.dumps(event), 'EventBusName': 'workflow-notifications-bus' }, ] )
接口返回响应
{ "FailedEntryCount": 0, "Entries": [ { "EventId": "07f05db5-da9f-74a2-0b81-55c5088895bd" } ], "ResponseMetadata": { "RequestId": "8d5adc18-6829-478f-8c20-4876bf723f52", "HTTPStatusCode": 200, "HTTPHeaders": { "x-amzn-requestid": "8d5adc18-6829-478f-8c20-4876bf723f52", "content-type": "application/x-amz-json-1.1", "content-length": "85", "date": "Wed, 12 Apr 2023 04:40:28 GMT" }, "RetryAttempts": 0 } }
排查与解决方案
开启事件总线的日志记录功能
EventBridge默认不会自动将事件写入CloudWatch日志,必须手动配置:- 进入EventBridge控制台,找到
workflow-notifications-bus事件总线 - 点击「编辑」,在「日志记录」板块勾选「启用日志记录」
- 指定一个CloudWatch日志组(可新建),设置日志级别为「全部」
- 确认控制台自动创建的IAM角色存在,且拥有向该日志组写入的权限
- 进入EventBridge控制台,找到
检查事件规则配置(若有)
如果是期望事件触发规则后生成日志,需确认:- 事件总线关联的规则,其
Source、DetailType等筛选条件是否与发送的事件匹配 - 规则的目标配置正常且未被禁用
注意:无规则的情况下,只有开启总线日志记录才能捕获所有流入事件
- 事件总线关联的规则,其
验证CloudWatch日志组路径与延迟
日志会写入你指定的日志组,而非默认EventBridge日志组;另外日志可能存在1-2分钟延迟,刷新后再查看兜底检查Lambda权限
虽然put_events返回成功,但确认Lambda执行角色是否拥有events:PutEvents权限,避免后续操作出现权限问题
内容的提问来源于stack exchange,提问作者sumanth shetty
相关产品推荐
相关产品推荐

