amazon-web-services - 连接到私有 VPC 的 AWS Lambda 无法启动/停止 EC2 实例
问题描述
我创建了 AWS Lambda 来启动和停止托管在私有 VPC 中的 EC2 实例。
我可以在“NO VPC”中部署 Lambda 函数并执行操作而不会出现任何问题。
但是,当我在私有 VPC(我的 EC2 所在的位置)和 2 个不同的子网(在其中一个子网 EC2 中启动)中部署 Lambda 函数并进行必要的安全组更改时,我得到了超时错误并且无法再执行操作。
问: Lambda 不需要外网,是否需要添加 NAT 网关?
如果是,请告诉我原因。
如果不是,请让我知道我还需要检查什么才能使此过程正常运行。
解决方案
在对 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。
推荐阅读
- android - mvi 架构 android 中的 viewState 类应该是什么样的?
- html - 为什么有些样式不适用于电子邮件模板?
- java - Java 8 到 11 升级:org.glassfish.jersey.server.wadl.WadlFeature 配置 WARNING: JAX-B API not found 。WADL 功能被禁用
- linux - 为什么我不能在 Linux 上使用 gcc-9.3.0?
- java - 使用 DexGuard 构建发布 APK 时出现 java.lang.OutOfMemoryError
- php - 如何在 Lumen 上创建通配符路由?
- javascript - 在内容中途更改字体大小/字体系列:
- c - Matlab“单”精度与C浮点?
- java - 是否可以使招摇不显示参考项目api
- python - 在 django rest 框架中验证验证代码