You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置公有子网中的AWS Lambda无需NAT即可访问互联网?

问题分析与解决方法

问题场景

  • 拥有3个公有子网(每个可用区各1个),子网关联的路由表已连接互联网网关,子网内的EC2实例可正常访问互联网
  • 部署在相同公有子网中的AWS Lambda调用互联网API时全部超时
  • Lambda安全组规则:
    • 入站:无任何规则
    • 出站:IPv4 所有流量 所有 所有 0.0.0.0/0(出站规则)
  • Lambda已配置关联上述3个公有子网及对应安全组

排查与解决步骤

  1. 检查子网的自动分配公网IP设置
    Lambda在VPC内运行时,依赖弹性网络接口(ENI)获取公网IP才能直接访问互联网。如果公有子网未开启自动分配公有IPv4地址,Lambda的ENI只会拿到私有IP,即使在公有子网也无法联网。

    • 操作路径:VPC控制台→子网→选中目标公有子网→查看“自动分配IPv4地址”状态,若未启用则开启后重新测试Lambda。
  2. 验证路由表的默认路由配置
    确认子网绑定的路由表中,存在指向互联网网关(IGW)的默认路由条目(0.0.0.0/0 → igw-xxxx),且该规则未被更具体的路由覆盖。

    • 操作路径:VPC控制台→路由表→选中子网关联的路由表→检查路由条目,确保默认路由正确指向IGW。
  3. 检查网络ACL(NACL)规则
    网络ACL的优先级高于安全组,若公有子网关联的NACL存在出站拒绝规则,会直接拦截Lambda的网络请求。

    • 操作路径:VPC控制台→网络ACL→选中子网关联的NACL→确认出站规则允许所有TCP/UDP/ICMP流量到0.0.0.0/0,且无优先级更高的拒绝规则。
  4. 确认Lambda执行角色的EC2权限
    Lambda在VPC内运行需要创建、管理弹性网络接口,若执行角色缺少相关权限,会导致ENI创建失败,进而无法联网。

    • 操作路径:IAM控制台→角色→选中Lambda执行角色→检查权限策略,确保包含ec2:CreateNetworkInterface、ec2:DescribeNetworkInterfaces、ec2:DeleteNetworkInterface权限。
  5. 测试基础网络连通性
    在Lambda中添加简单测试代码,排查是特定API的问题还是整体网络不通:

    import requests
    def lambda_handler(event, context):
        try:
            response = requests.get("http://icanhazip.com", timeout=5)
            return {"status": "success", "ip": response.text.strip()}
        except Exception as e:
            return {"status": "failed", "error": str(e)}
    

内容的提问来源于stack exchange,提问作者Kristi Jorgji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:03:23