创建VPC Endpoint后无法访问公有AWS API Gateway端点问题咨询
问题解决实操步骤
1. 排查API Gateway资源策略配置
这是Regional端点返回403的最高发原因:
- 若你为API Gateway配置了调用源IP限制的资源策略,必须把VPC NAT网关绑定的弹性公网IP(EIP)加入允许列表,Lambda通过NAT访问公网Regional API时,对外显示的源IP就是该EIP
- 若你同时配置了私有端点的访问允许规则,注意不要覆盖公网调用的权限,资源策略参考配置如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<区域ID>:<AWS账户ID>:<API ID>/*/*/*", "Condition": { "IpAddress": { "aws:SourceIp": ["<NAT网关的EIP地址>"] } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<区域ID>:<AWS账户ID>:<API ID>/*/*/*", "Condition": { "StringEquals": { "aws:SourceVpce": "<API网关私有端点的VPCE ID>" } } } ] }
2. 排查VPC路由配置
- 确认Lambda所在子网的路由表中,公网段
0.0.0.0/0的下一跳为NAT网关,保证访问Regional API的流量可以正常从公网出口转发 - 确认私有API网关VPCE的路由条目已正确添加到子网路由表,目标为VPCE对应的前缀列表,下一跳为VPCE,避免私有端点流量被误路由到公网
3. 排查VPC Endpoint私有DNS冲突
如果你为com.amazonaws.<区域>.execute-api服务的VPCE开启了私有DNS选项,会导致VPC内所有execute-api.<区域>.amazonaws.com域名默认解析到VPCE私有IP,此时访问未关联该VPCE的Regional API就会返回403,可选两种解决方案:
- 关闭execute-api VPCE的私有DNS开关,私有API改用VPCE公有DNS或自定义域名调用
- 给需要调用的Regional API配置独立自定义域名,VPC内通过自定义域名调用,避开默认域名的解析冲突
4. 排查其余访问控制配置
- 确认Lambda执行角色包含
execute-api:Invoke权限,资源范围覆盖你需要调用的所有私有、Regional API的ARN,且无冲突的Deny规则 - 确认Regional API未开启WAF规则拦截NAT网关EIP,也未开启强制API Key校验但请求未携带有效Key
内容的提问来源于stack exchange,提问作者FunWithJava
相关产品推荐
相关产品推荐

