VPC 中 lambda 的 IP 地址耗尽

Sir*_*ock 6 amazon-web-services amazon-vpc amazon-lambda

我目前是一个小组的一员,该小组正在处理部署 300 多个运行 Node.js 的 AWS Lambda 函数而不是更传统的 REST API 的影响。我最近实现了一个应用程序,该应用程序在私有子网上的 VPC 中的 EC2 实例上运行。因此,将与此应用程序大量通信的 Lambda 本身也被放置在同一 VPC 中的私有子网中。EC2 实例在 6 个私有/24 个子网中运行(我们地区的每个可用区一个)。lambdas 有 6 /20 个私有子网,它们被配置为在其中运行。据我所知,每次调用 lambda 都会在其中一个子网中分配一个 IP 地址,这在我们用完之前为我提供了大约 24,564 个 IP 地址。

我的问题是:

1) Lambda 是否只在实际运行期间占用IP地址,然后释放IP地址?更简洁地说,我们是否会很快用完 IP 地址,因为我们预计调用很快就会增加?我知道我可以将 VPC 中的更多地址空间分配给 lambda,但这会是我们一直在追寻的问题吗?

2) 如何在 AWS 控制台或其他地方查看 lambda 占用了多少 IP 地址?

注意:我是一名初级 DevOps 工程师,所以如果有什么不清楚的地方请原谅我并随时纠正我

Tim*_*Tim 6

这个答案现在已经过时了。有关最新信息,请参阅此博客文章或其他 AWS 文档。


此页面说明在 VPC 内使用 Lambda 时需要多少 ENI - 这是每个子网

如果您的 Lambda 函数访问 VPC,您必须确保您的 VPC 具有足够的 ENI 容量来支持您的 Lambda 函数的规模要求。您可以使用以下公式来大致确定 ENI 要求。

预计的峰值并发执行次数 *(以 GB/3GB 为单位的内存)

假设您有 10 个 lambda 并发执行并分配了 1GB,即每个子网10 x 1 / 3 = 3.33 或 4 个 ENI / 私有 IP 。如果您有 100 个并发执行并分配了 2GB,则每个子网有80 个 ENI/私有 IP 。我认为没有任何关于 ENI 的创建和删除频率的描述,而且实施细节可能会随着时间的推移而改变。

您可以在控制台或ENI API 中查看ENI

根据此问题,Lambda 必须具有创建和删除 ENI 的权限。