如何获取AWS API Destinations日志并排查消息被拒问题
可通过以下配置在CloudWatch中获取API Destinations/Connections相关错误日志
第一步:开启EventBridge事件总线的全链路日志
- 进入对应事件总线的配置页,找到日志记录配置项,将日志级别设置为
Trace(仅选Error级别不会记录API调用的请求/响应详情、鉴权过程日志),指定日志投递的CloudWatch日志组,保存配置后新触发的规则调用全链路数据都会上报到该日志组。 - 配置生效后,Connection鉴权失败、API Destination请求被拒的具体原因(包括HTTP状态码、目标接口返回的响应体、鉴权错误详情)都会被记录,这部分内容默认不会写入DLQ的死信消息中。
第二步:用CloudWatch Logs Insights快速定位错误
打开CloudWatch Logs Insights,选中你刚才配置的事件总线对应的日志组,运行以下查询语句即可筛选出所有API Destination相关的错误:
fields @timestamp, @message, resources, detail.errorCode, detail.errorMessage | filter detail.type == "ApiDestinationInvocationFailed" or detail.type == "ConnectionAuthFailed" | sort @timestamp desc | limit 50
查询返回的字段说明:
- 若为
ConnectionAuthFailed类型错误:会直接展示鉴权失败的具体原因,包括API密钥错误、OAuth凭证无效、Basic Auth参数不匹配、token刷新接口返回异常等细节 - 若为
ApiDestinationInvocationFailed类型错误:会展示目标API返回的完整HTTP状态码、响应头、响应体内容,可直接定位是参数格式错误、权限拦截、限流还是服务端异常导致的请求被拒
常见排查遗漏点
- 如果你使用的是OAuth客户端凭证模式的Connection,token自动刷新失败的日志有时不会归类到对应事件总线的调用日志下,可以直接在CloudWatch所有日志组中搜索关键字
ConnectionAuthError+你的Connection名称,即可捞取到对应报错。 - DLQ中的死信消息默认只带基础事件内容,不会携带调用失败的具体原因,开启Trace级日志后,EventBridge会自动把错误码、错误信息补充到DLQ消息的属性字段中,也可以直接从DLQ消息体中读取失败原因。
提示:Trace级日志会记录全量请求响应内容,排查完成后可将日志级别调整为
Error或关闭日志记录,避免产生不必要的存储费用。
内容的提问来源于stack exchange,提问作者Martin Macak
相关产品推荐
相关产品推荐

