AWS Lambda向IP地址URL发起HTTP请求失败,求解决方案
问题分析与解决方法
核心原因
是的,你遇到的问题确实和Lambda处于VPC中有关。当Lambda部署在VPC内时,其网络流量会遵循VPC的路由规则:
- 如果目标IP
ii.iii.i.iii与你的VPC子网CIDR范围重叠,Lambda会将其视为VPC内部地址尝试访问,自然无法连接到外部的API服务。 - 即使IP不重叠,若Lambda所在子网的路由表未配置正确的互联网出口(如NAT网关),也会导致外部请求超时。
解决步骤
检查VPC路由表配置
确认Lambda所在子网的路由表中,存在一条目标为0.0.0.0/0(或包含目标IP的具体网段)的路由,且下一跳指向NAT网关(注意:私有子网不能直接使用互联网网关IGW,必须通过NAT网关中转)。验证IP网段冲突
核对你的VPC及子网的CIDR范围,若目标IPii.iii.i.iii落在VPC的网段内,需要:- 调整VPC/子网的CIDR(如果业务允许);
- 或把Lambda移出VPC(若Lambda无需访问VPC内资源)。
检查安全组与网络ACL
- Lambda的安全组需允许出站流量到目标IP的
8080端口(TCP协议); - 子网的网络ACL要同时允许:
- 出站方向:目标IP的
8080端口; - 入站方向:来自NAT网关的响应流量(通常是动态端口范围)。
- 出站方向:目标IP的
- Lambda的安全组需允许出站流量到目标IP的
可选:移出VPC(若无需VPC资源)
如果你的Lambda不需要访问VPC内的服务(如RDS、ElastiCache等),直接移除Lambda的VPC配置即可。此时Lambda会使用AWS公共网络,可正常访问外部IP地址。
排查小技巧
- 在Lambda代码中添加日志,打印网络请求的路由跟踪信息(如使用
traceroute或类似工具),确认流量走向; - 在同VPC的EC2实例中测试访问
https://ii.iii.i.iii:8080/api,若EC2也无法访问,说明问题出在VPC网络配置;若EC2能访问,则重点检查Lambda的安全组配置。
内容的提问来源于stack exchange,提问作者ajthinking
相关产品推荐
相关产品推荐

