自定义VPC公有子网中AWS Lambda无法访问互联网排查求助
Lambda部署到VPC公有子网无法访问互联网的排查与修复
Lambda部署到VPC后的网络逻辑和EC2有本质区别,哪怕是公有子网,也不能直接照搬EC2的外网访问配置。结合你的情况,以下是你遗漏的核心配置点:
Lambda不支持通过IGW直接访问外网:
公有子网的路由表即便配置了指向IGW的0.0.0.0/0规则,EC2可以直接走这条路由访问外网,但Lambda不行。Lambda的网络流量由AWS Lambda服务调度,必须通过NAT网关/实例完成地址转换才能访问互联网,哪怕你给ENI绑定了弹性IP也没用——Lambda的ENI是动态生成的,手动绑定的IP无法覆盖所有实例,且Lambda本身不支持这种访问模式。路由表出站规则配置错误:
你需要修改Lambda所在公有子网的路由表,把0.0.0.0/0的出站路由指向NAT网关(而不是IGW)。同时要确保NAT网关部署在VPC的另一个公有子网中,且绑定了弹性IP——NAT网关需要通过IGW访问外网,再把流量转发给Lambda的ENI。Lambda执行角色的VPC权限缺失:
确认你的Lambda执行角色拥有以下EC2权限:ec2:CreateNetworkInterface、ec2:DescribeNetworkInterfaces、ec2:DeleteNetworkInterface
这些权限是Lambda在VPC中动态创建/管理ENI的必要条件,缺失会导致网络接口异常,间接影响外网访问。
正确修复步骤:
- 在VPC的独立公有子网中创建NAT网关,并为其分配弹性IP。
- 更新Lambda所在公有子网的路由表,将0.0.0.0/0的目标改为该NAT网关。
- 验证Lambda执行角色的权限配置,确保包含上述EC2操作权限。
内容的提问来源于stack exchange,提问作者Andrew Ryabchenko
相关产品推荐
相关产品推荐

