AWS Lambda 配置 VPC 意味着什么?

What it means when AWS Lambda is configured with VPC?

即使浏览了 AWS documentation 和各种博客,我仍然不明白 AWS lambda 在配置 VPC 时的行为方式。

  1. 当 AWS lambda 配置了 VPC 时,是否意味着所有 lambda 实例都将从该 VPC 的指定子网获取 IP 地址?
  2. ENI在AWS Lambda-VPC配置中的作用如何? AWS 文档中的 ENI 容量公式 -

Projected peak concurrent executions * (Memory in GB / 3GB)

这是否意味着 AWS lambda 的 运行ning 实例曾经有 3 GB 内存?当超过另一个 ENI 时会被附加吗?

  1. 大多数与 AWS Lambda-VPC 配置相关的架构图显示了 VPC 内部的 Lambda。这是否意味着 Lambda 会 运行 在 VPC 中?

在这里,我确定我遗漏了一些信息。任何指针都会有所帮助。

当您在 VPC 中将 Lambda 函数配置为 运行 时,它使用创建的 ENI 和您 select 之一的子网中的 IP 地址。根据所需的预期 ENI 的公式,似乎可以在 lambda 之间共享 ENI。

据我所知,运行在 VPC 中使用 lambda 的原因只有两个。

  1. 它需要访问您的 VPC 内没有 public 端点的资源,例如Redis/Memcached 缓存集群 (Elasticache) 或没有 public ip 的 RDS/Redshift 集群(数据库上没有 public ip 是个好主意)。当您在 VPC 内使用 lambda 运行s 时,它使用私有 ip 并且可以连接到您的 VPC
  2. 中的私有资源
  3. 如果您需要让您的 lambda 具有一致的 IP 地址(也许是一项只允许将 IP 列入白名单以进行身份​​验证的服务)。这是通过使用 NAT 网关实现的。

Lambda 函数在任何情况下都无法接收入站连接。

将 lambda 放在 VPC 中的缺点是

  1. 冷启动时间较慢,因为可能需要配置 ENI。
  2. 您需要一个 NAT 网关(或 VPC 端点)来访问外部资源
  3. 需要更密切地管理并发和可用 IP 地址。