如何获取AWS API Gateway部署阶段的服务器IP地址?
获取AWS API Gateway部署阶段的服务器IP地址
嘿,我来帮你解决这个问题——因为API Gateway的IP限制导致数据库连不上确实挺头疼的,下面几种方法能帮你拿到对应的IP范围或者临时源IP:
方法1:从AWS官方IP范围列表提取API Gateway的IP段
AWS会维护一个包含所有服务IP范围的JSON文件,你可以直接过滤出API Gateway的部分:
- 先获取这个JSON文件:
curl https://ip-ranges.amazonaws.com/ip-ranges.json - 如果装了jq工具,直接用命令过滤(没装的话手动搜索文件里的
API_GATEWAY关键字也行):
要是你只需要特定区域的IP,比如你的API在curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[] | select(.service=="API_GATEWAY") | .ip_prefix'us-east-1,就加个区域过滤:
把这些IP段加到数据库的白名单里就行,这是长期可靠的方式。curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[] | select(.service=="API_GATEWAY" and .region=="us-east-1") | .ip_prefix'
方法2:临时获取单请求的源IP(调试用)
如果你只是想确认某次API调用的出口IP,可以在API Gateway里配置映射模板,把请求的源IP返回给你:
- 打开API Gateway控制台,进入你的API,选中目标部署阶段
- 找到集成请求的映射模板,新增一个
application/json模板,内容写:{ "sourceIp": "$context.identity.sourceIp" } - 重新部署API后,调用接口就能拿到这次请求的源IP。不过要注意,这个IP是AWS IP池里的随机地址,每次可能不一样,所以只适合临时调试。
方法3:私有API Gateway的特殊情况
如果你的API是部署在VPC里的私有类型,那它会使用你VPC子网的IP,直接把对应子网的IP段加到数据库白名单就好,这种场景比较少见,大部分公网API都是用AWS管理的IP池。
额外提醒
- AWS的IP范围会不定期更新,建议定期检查那个JSON文件,或者用AWS Config之类的工具自动同步白名单,避免突然连不上。
- 如果你的API用了自定义域名,请求会先经过CloudFront,这时候还要把CloudFront的IP段也加进去,不然还是会被挡。
内容的提问来源于stack exchange,提问作者vibhav bhavsar
相关产品推荐
相关产品推荐

