首页 > 解决方案 > 连接到私有 VPC 的 AWS Lambda 无法启动/停止 EC2 实例

问题描述

我创建了 AWS Lambda 来启动和停止托管在私有 VPC 中的 EC2 实例。

我可以在“NO VPC”中部署 Lambda 函数并执行操作而不会出现任何问题。

但是,当我在私有 VPC(我的 EC2 所在的位置)和 2 个不同的子网(在其中一个子网 EC2 中启动)中部署 Lambda 函数并进行必要的安全组更改时,我得到了超时错误并且无法再执行操作。

问: Lambda 不需要外网,是否需要添加 NAT 网关?

如果是,请告诉我原因。

如果不是,请让我知道我还需要检查什么才能使此过程正常运行。

标签: amazon-web-servicesamazon-ec2aws-lambdaamazon-vpc

解决方案


在对 AWS 进行 API 调用时,可以从 Internet 访问服务端点。因此,发出启动或停止 Amazon EC2 实例的命令需要访问 Internet。

如果 AWS Lambda 函数配置为使用 VPC,则默认情况下它可以访问 Internet

如果 AWS Lambda 函数配置为使用 VPC,并且该 Lambda 函数需要访问 Internet,则:

  • 将 Lambda 函数配置为使用私有子网
  • 在公共子网中启动NAT 网关并更新私有子网路由表以将 NAT 网关用于 Internet 绑定流量

或者,您可以为 EC2 创建一个 VPC 端点。这允许发往 EC2 服务的命令通过 VPC 终端节点,而无需通过 Internet。这通常用于没有 Internet 网关的 VPC(例如,没有公共访问权限的开发/测试 VPC)。

最后,考虑一下 Lambda 函数是否真的需要连接到 VPC。如果它需要在 VPC 内访问访问 Internet,则需要使用上述方法之一。但是,如果它不需要访问 VPC,则不要将其连接到 VPC,它会很好地连接到 Internet。


推荐阅读