已加入VPC的AWS App Runner服务如何访问公网?
AWS App Runner加入VPC后无法访问公网问题
现状
- 后端部署为AWS App Runner服务
- 因需与私有RDS实例通信,已将服务接入VPC
- 当前后端可正常与RDS实例通信
预期
- 后端同时具备公网HTTP请求发起能力
实际情况
- 后端发起的所有公网HTTP请求均超时无响应
- 可通过App Runner生成的域名正常访问服务(入站流量正常)
已检查项
- 已连接Internet Gateway
- 路由表已配置
0.0.0.0/0指向Internet Gateway - 安全组已允许全量出站访问
- 曾尝试替换为NAT Gateway并配置对应路由表,但问题未解决
配置截图
- AWS App Runner服务的VPC Connector配置:

- 允许所有流量的安全组出站规则:

- 将出站流量路由至Internet gateway的路由表:

- 与所有子网关联的路由表(默认配置未修改):

公网访问验证方式
- 尝试请求
google.com - 在请求前、请求后及异常捕获处添加日志
- 仅请求前日志输出,后续无内容,调用该请求的API持续加载直至5分钟后网关超时:

问题分析与解决方案
核心问题
App Runner通过VPC Connector接入VPC时,其运行的任务实例不会分配公网IP,因此直接将私有子网的路由指向Internet Gateway无法实现公网出站访问——Internet Gateway仅能为带有公网IP的资源提供公网访问能力。
正确配置步骤
创建NAT Gateway并部署在公有子网
- 确保NAT Gateway所在的公有子网路由表已配置
0.0.0.0/0指向Internet Gateway,且该公有子网的实例可正常访问公网 - 为NAT Gateway分配弹性公网IP(EIP)
- 确保NAT Gateway所在的公有子网路由表已配置
调整私有子网路由表
- 将App Runner VPC Connector所关联的私有子网的路由表中,
0.0.0.0/0的下一跳修改为NAT Gateway(而非Internet Gateway)
- 将App Runner VPC Connector所关联的私有子网的路由表中,
确认安全组规则
- App Runner服务关联的安全组需允许出站流量到NAT Gateway(可配置全量出站或限定端口)
- NAT Gateway关联的安全组需允许来自App Runner安全组的入站流量(对应公网请求的响应回传)
重新部署App Runner服务
- 修改VPC Connector配置或路由表后,需触发App Runner服务重新部署,确保配置生效
额外说明
根据AWS App Runner路线图相关讨论:当App Runner通过VPC Connector连接到私有子网时,必须借助NAT Gateway实现公网出站访问,直接使用Internet Gateway无法生效,这是由App Runner的VPC接入机制决定的。
内容的提问来源于stack exchange,提问作者Hossam El-Deen
相关产品推荐
相关产品推荐

