使用@http指令的AppSync非80端口请求失败问题
问题分析与解决方案
核心原因
AppSync本身没有强制限制非80/443端口的请求,问题出在AWS环境与目标服务之间的网络策略,而非Amplify或AppSync的内置限制:
- 当AppSync以公网模式运行时,目标服务的9012端口需要对外开放,允许AWS服务的IP段访问
- 若目标服务部署在VPC内,需确保AppSync的VPC访问配置(如果启用)能打通到该端口,同时目标服务的安全组要允许AppSync的VPC/IP访问9012端口
排查与解决步骤
- 检查目标服务的网络准入规则:
- 确认目标服务的安全组入站规则,是否允许AWS AppSync的IP范围(或临时放开公网所有IP测试)访问9012端口
- 检查目标服务所在VPC的NACL规则,确保入站和出站都放行9012端口的流量
- 验证AppSync的网络模式:
- 如果AppSync配置了VPC私有访问,要确认VPC路由表能指向目标服务,且目标服务安全组允许VPC内部流量访问9012端口
- 若AppSync是公网模式,检查目标服务的公网IP/域名能否被AWS公网环境解析,同时确认该端口没有被防火墙或运营商拦截
- 测试端口连通性:
- 在AWS同区域的EC2实例上,用
telnet myapi.net 9012或nc -zv myapi.net 9012测试连通性,排除AWS到目标服务的链路问题
- 在AWS同区域的EC2实例上,用
- 核对Resolver配置:
- 确认@http指令中的URL端口号无拼写错误,headers配置没有引入额外的访问限制
额外说明
默认80端口能正常工作,是因为绝大多数网络环境(安全组、防火墙)默认允许80/443这类标准HTTP/HTTPS端口的流量,而非标准端口通常需要显式配置准入规则,才能被外部(包括AWS服务)访问。
内容的提问来源于stack exchange,提问作者Leonardo Soares Bezerra
相关产品推荐
相关产品推荐

