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

在VPC内的AWS Lambda中使用boto访问EC2遇挂起问题求助

解决Lambda加入VPC后boto工具停止工作的问题

我之前也碰到过一模一样的坑!当把Lambda放进VPC后,哪怕安全组开了全出站、IAM权限也没问题,还是会出现boto调用挂起的情况,核心原因其实是VPC内的Lambda默认没有公网访问能力——而boto调用EC2这类AWS服务的API,需要访问AWS的公网端点(或者内网VPC端点)。下面给你两种靠谱的解决方案,还有额外的排查点:

方案一:配置VPC端点(推荐,更安全)

这是最优解,因为不需要走公网,直接通过VPC内网访问AWS服务API,既安全又稳定:

  • 操作步骤:
    1. 登录AWS控制台,进入「VPC」服务,找到左侧菜单的「端点」选项
    2. 点击「创建端点」,选择「AWS服务」类型,然后找到对应区域的EC2服务(格式是com.amazonaws.<你的区域>.ec2)
    3. 选择你的Lambda所在的VPC和子网,再选中Lambda使用的安全组(确保内网连通)
    4. 配置端点的权限策略,可以用默认的全访问策略,或者根据你的boto操作配置更精细的权限(比如只允许ec2:Describe*这类操作)
  • 配置完成后,Lambda就能直接通过内网调用EC2 API,不会再出现挂起的情况了。

方案二:配置NAT网关(适合需要访问公网的场景)

如果你的Lambda除了调用AWS服务,还需要访问其他公网资源,那可以给Lambda所在的子网配置NAT网关:

  • 操作步骤:
    1. 在你的VPC里创建一个公有子网(必须是能分配公网IP的子网)
    2. 在这个公有子网里创建NAT网关,并分配一个弹性IP
    3. 修改Lambda所在子网的路由表,把0.0.0.0/0的路由指向这个NAT网关
    4. 确保NAT网关所在的安全组允许出站到HTTPS(443端口)——AWS API都是走HTTPS的
  • 这样Lambda就能通过NAT网关访问公网,顺利调用EC2 API了。

额外排查小Tips

  • 再确认下Lambda的执行角色权限:虽然你说VPC外正常,但可以检查IAM策略里是否包含了所有boto需要的EC2权限(比如ec2:RunInstances、ec2:DescribeInstances等)
  • 查看CloudWatch Logs:Lambda的日志里会有具体的错误信息,比如“超时”“无法连接到EC2端点”,这能帮你快速定位问题
  • 检查子网路由表:确保路由表没有拦截到AWS API的流量,比如方案一里的VPC端点会自动添加路由,方案二里的NAT路由要配置正确
  • 安全组确认:虽然你说允许所有出站,但可以再检查下有没有不小心限制了443端口的出站流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:28:56