0

我有一个项目,涉及运行数百个从互联网获取数据的 Lambda 函数。

这些函数在我的 VPC 的私有子网中运行。

我希望这些功能的互联网流量并非都具有相同的 IP。

我的理解是我应该在公共子网中创建一个 NAT 网关,但是我找不到如何在该 NAT 网关上拥有多个公共 IP 以进行某种随机化。

这甚至可能吗?

应该如何着手实现这一目标?

4

2 回答 2

2

使用 NAT 网关是不可能的,因为每个 NATG 只能附加一个公共 IP。

但是,如果您愿意使用NAT 实例(更多的手动配置和管理开销),这是可能的。您可以设置多个 NAT 实例。相应地将您的 lambdas 部署到多个私有子网中,每个子网都配置为转到其中一个 NAT 实例。

于 2021-10-12T12:42:41.180 回答
1

不幸的是,这是不可能的,因为您无法将多个弹性 IP 与公共 NAT 网关相关联。


根据文档,公共 NAT 网关只能使用 1 个分配的弹性 IP :

NAT 网关将实例的源 IP 地址替换为 NAT 网关的IP 地址。对于公共 NAT 网关,这是 NAT 网关弹性IP 地址

您可以将一个弹性IP 地址与一个公共 NAT 网关关联。

要为您的 NAT 网关使用不同的弹性 IP 地址,您必须使用所需的地址创建一个新的 NAT 网关,更新您的路由表,然后删除现有的 NAT 网关(如果不再需要)。


拥有多个弹性 IP 和多个 NAT 网关也不可行,因为弹性 IP 的默认(但可调整)限制是每个区域 5 个和 NAT 网关,每个 AZ 5 个

如果您使用 IaC(例如 Terraform、CloudFormation 等),理论上您可以创建多个私有NAT 实例(在增加每个区域的服务配额之后),但我建议在这种情况下创建您自己的 NAT AMI。

将服务配额提高到数百个实例以及购买数百个 Elastic IPS肯定会引起一些警报。

如果可能,我会考虑重新架构您的应用程序(除非您的应用程序的性质需要它,在这种情况下,AWS 可能不是最佳选择)。

于 2021-10-12T12:31:09.383 回答