有没有办法将一个静态弹性 IP 分配给多个实例?

Is there a way to assign one static elastic IP to multiple instances?

是否有许多ec2实例可以共享同一个IP?这样来自 ec2 实例的所有出站 API 请求都来自同一个 IP 地址?如果 API 提供商要将单个静态 IP 地址列入白名单,它将授予对所有实例的访问权限。

任何想法都会很棒!

如果这仅适用于出站,则可以使用 NAT Gateway.

来实现

所有 EC2 实例都位于 public NAT 网关后面,然后为 NAT 网关分配一个 Elastic IP Address

来自 EC2 实例的所有流量都将 routed via the NAT Gateway 到互联网网关,目标环境将看到源自分配给 NAT 网关的弹性 IP 地址的所有流量。

但是,如果流量必须走另一条路(入站),则此架构将不起作用。

更新:NAT 网关必须位于 public 子网中,该子网将有一个到 Internet 网关的路由 0.0.0.0/0。 EC2 实例将驻留在一个私有子网中,并有一个路由 0.0.0.0/0 到 public 子网中的 NAT 网关。

此外,对于高可用性,建议您至少有 4 个子网,2 个在 2 个不同的可用区 (AZ) 中。 NAT 网关不跨越子网,因此至少应使用两个 NAT 网关,一个位于第一个 AZ 的 public 子网 A 中,另一个位于第二个 AZ 的 public 子网 B 中。

架构如下:

其中路由 Table A(与两个 public 子网相关联)具有到 Internet 网关的路由,即

  • 10.0.0.0/16 - 本地
  • 0.0.0.0/0 - igw-xxxxxxxxx

路由 Table B 与私有子网 10.0.10.0/24 相关联,在 public 子网 (10.0.0.0/24) 中有一个到 NAT 网关的路由,即

  • 10.0.0.0/16 - 本地
  • 0.0.0.0/0 - nat-123456

路由 Table C 与私有子网 10.0.11.0/24 相关联,在 public 子网 (10.0.1.0/24) 中有一个到 NAT 网关的路由,即 10.0.0.0/16 本地 0.0.0.0/0 nat-654321

In this architecture each NAT Gateway will have it's own Elastic IP address which means 2 IP Addresses will be visible to the target, if high availability is not important then you could use 1 NAT Gateway in one public subnet. Note that, a NAT gateway supports 5 Gbps of 带宽并自动扩展到 45 Gbps。如果您需要更多带宽,您可以将您的资源拆分到多个子网中,并在每个子网中创建一个 NAT 网关。

有关在 VPC 内配置 NAT 的更多详细信息,请参阅 following page in the docs