amazon-web-services - 连接到私有(private) VPC 的 AWS Lambda 无法启动/停止 EC2 实例

标签 amazon-web-services amazon-ec2 aws-lambda amazon-vpc

我已创建 AWS Lambda 来启动和停止私有(private) VPC 中托管的 EC2 实例。

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

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

问题:虽然不需要外部网络,但是否需要为 Lambda 添加 NAT 网关?

如果是,请告诉我原因。

如果不是,请告诉我还需要检查哪些内容才能使此流程正常运行。

最佳答案

对 AWS 进行 API 调用时,service endpoints可以通过互联网访问。因此,发出启动或停止 Amazon EC2 实例的命令需要访问 Internet。

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

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

  • 将 Lambda 函数配置为使用私有(private)子网
  • 在公有子网中启动 NAT 网关并更新私有(private)子网路由表以使用 NAT 网关处理互联网流量

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

最后,考虑一下 Lambda 函数是否确实需要连接到 VPC。如果需要在 VPC 内访问并访问 Internet,则需要使用上述方法之一。但是,如果它不需要访问VPC,那么就不要将其连接到VPC,它会正常连接到互联网。

关于amazon-web-services - 连接到私有(private) VPC 的 AWS Lambda 无法启动/停止 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59055266/

相关文章:

amazon-web-services - 当 MySQL (RDS) 表创建/更新行时,可以自动调用 Lambda 函数吗?

node.js - async/await 破坏了我为 AWS Lambda 构建的 Webpack;如何迁移到 Node 8.10?

amazon-web-services - 部署在 Elastic Beanstalk Java 环境上的 Spring Boot 应用程序返回 502

ios - 预签名 Url 分段上传始终返回 403

amazon-web-services - 使用 Ansible 在 AWS 中进行蓝绿部署

amazon-web-services - 如何从 AWS API 获取每个 EC2 的成本,而不是所有 EC2 的总成本

amazon-web-services - 无法正确停止我的 AWS EC2 实例

amazon-web-services - 通过 cloudformation 在 s3 存储桶上启用对象日志记录

amazon-web-services - 如何从sam deploy命令中排除文件夹?

node.js - 使用 Nodejs 重命名文件