AWS EventBridge规则调用API Gateway报403:NO_PERMISSIONS错误排查
EventBridge调用Regional API Gateway返回403权限错误的排查方案
问题背景
- 已部署Regional类型的API Gateway,通过IAM凭证可从外部应用正常调用,测试验证有效
- 配置EventBridge固定速率规则(每2分钟触发),目标指向API的
api-id/prod/*/healthCheck,ARN格式为arn:aws:execute-api:region:account:api-id/prod/*/healthCheck,临时给EventBridge服务角色赋予管理员权限 - 所有调用失败,DLQ显示返回403权限错误,已排除私有端点限制问题
具体排查与修复步骤
修正EventBridge目标的ARN格式
EventBridge调用API Gateway时,目标ARN必须指定具体的HTTP方法,不能使用通配符*。正确的ARN格式为:arn:aws:execute-api:<region>:<account-id>:<api-id>/<stage>/<http-method>/<resource-path>例如你的
healthCheck是GET接口,ARN应调整为:arn:aws:execute-api:region:account:api-id/prod/GET/healthCheck检查API Gateway资源策略
即使给了管理员权限,API Gateway自身的资源策略可能会限制访问。需添加允许EventBridge服务调用的规则:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<region>:<account-id>:<api-id>/prod/GET/healthCheck" } ] }替换匹配你环境的
region、account-id、api-id和HTTP方法。验证EventBridge服务角色的信任关系
确认服务角色的信任策略允许EventBridge扮演该角色:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }核对IAM权限的资源范围
管理员权限虽宽泛,但需确保execute-api:Invoke权限的资源范围覆盖目标API的具体路径,避免因资源匹配不精确导致的隐含拒绝。查看CloudWatch日志定位细节
手动触发EventBridge规则后,在CloudWatch的EventBridge日志组中查看调用的请求参数、签名信息和返回详情,能精准定位是路径不匹配、签名错误还是权限策略的问题。
内容的提问来源于stack exchange,提问作者A Simple Programmer
相关产品推荐
相关产品推荐

