You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

私有子网EC2访问AWS API Gateway出现403错误求助

排查私有子网EC2通过VPC端点访问API Gateway的403错误

从你的操作和报错信息来看,核心问题大概率出在API Gateway资源策略的配置逻辑以及VPC端点的流量路径验证上,我帮你梳理几个关键排查和修复步骤:

1. 修正资源策略的致命错误

你当前的资源策略存在两个逻辑错误,直接导致了403拒绝:

  • 错误使用条件键:针对VPC端点的访问控制,应该用aws:sourceVpce(对应VPC端点ID),而非aws:sourceVpc(对应VPC的ID)。
  • 错误的条件运算符:你用了StringNotEquals,这意味着拒绝来自指定VPCE的请求,但你需要的是只允许该VPCE的请求,所以要改成StringEquals。

修正后的策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:eu-west-1:{{MY_ACCOUNT}}:{{MYAPI}}/*",
      "Condition": {
        "StringEquals": {
          "aws:sourceVpce": "vpce-{{ID}}"
        }
      }
    }
  ]
}

修改后记得重新部署API Gateway的DEV Stage,确保策略生效。

2. 验证VPC端点的配置正确性

  • 子网与DNS配置:确认你的execute-api类型VPC端点,已经关联了EC2所在的私有子网,并且启用了DNS解析(默认开启,但建议手动确认)。
  • 路由表检查:EC2所在子网的路由表中,必须添加指向该VPCE的路由,目标前缀为com.amazonaws.eu-west-1.execute-api,这样流量才会走VPC端点而非公网。
  • 安全组规则:
    • EC2实例的安全组要允许出站HTTPS(443)流量到VPCE的安全组。
    • VPCE的安全组要允许来自EC2安全组的HTTPS(443)入站流量。

3. 确认流量确实走VPC端点

在EC2实例上执行以下命令,验证API Gateway域名是否解析到VPCE的私有IP:

nslookup {{MYAPI}}.execute-api.eu-west-1.amazonaws.com

如果解析结果是VPCE的私有IP,说明流量路径正确;如果是公网IP,说明路由表或VPCE的DNS配置有问题。

4. 排查API Gateway基础配置

  • 确认API类型:你的API必须是区域型(Regional),边缘优化型(Edge-optimized)API的VPC端点访问需要额外配置,不适合私有子网场景。
  • 验证请求路径匹配:检查你调用的/DEV/CustomerInfo/?customerId={{CUST_ID}},是否和API Gateway中定义的资源路径、HTTP方法(比如GET)完全匹配,且该方法已在DEV Stage部署。

5. 临时排除策略干扰测试

如果以上步骤都没问题,可以临时移除API Gateway的资源策略,再从EC2访问测试。如果能成功,说明还是策略配置的细节问题;如果依然403,需要检查API集成后端的权限,或者是否有WAF、认证机制拦截了请求。


内容的提问来源于stack exchange,提问作者ANUJ AGARWAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:27:26