在 VPC 内部将 Amazon ECS 连接到 AWS 服务的最佳实践 - Amazon Elastic Container Service

在 VPC 内部将 Amazon ECS 连接到 AWS 服务的最佳实践

为了使 Amazon ECS 正常运行,在每个主机上运行的 Amazon ECS 容器代理必须与 Amazon ECS 控制面板通信。如果您将容器映像存储在 Amazon ECR 中,则 Amazon EC2 主机必须与 Amazon ECR 服务端点和存储映像层的 Amazon S3 进行通信。如果您为容器化应用程序使用其他 AWS 服务,例如存储在 DynamoDB 中的持久数据,请仔细检查这些服务是否也具有必要的联网支持。

NAT 网关

使用 NAT 网关是用于确保您的 Amazon ECS 任务可以访问其他 AWS 服务的最简单方法。有关此方法的更多信息,请参阅私有子网和 NAT 网关

图中显示了使用 NAT 网关的网络架构。

使用这种方法的缺点如下:

  • 您无法限制 NAT 网关可以与哪些目标通信。如果不中断来自 VPC 的所有出站通信,则无法限制后端层可以与哪些目标通信。

  • NAT 网关将按传递的每 GB 数据收费。如果使用 NAT 网关执行以下任何操作,则按每 GB 带宽收费:

    • 从 Amazon S3 下载大型文件

    • 对 DynamoDB 执行大量数据库查询

    • 从 Amazon ECR 提取映像

    此外,NAT 网关支持 5 Gbps 带宽,并且可自动纵向扩展到 45 Gbps。如果您通过单个 NAT 网关进行路由,则需要极高带宽连接的应用程序可能会遇到网络限制。解决方法是,您可以将工作负载分成多个子网,并为每个子网分配单独的 NAT 网关。

AWS PrivateLink 在 VPC、AWS 服务和您的本地网络之间提供私有连接,而不会将流量外泄至公共互联网。

通过 VPC 端点可在 VPC 与受支持的 AWS 服务以及 VPC 端点服务之间建立私有连接。VPC 和其他服务之间的流量不会脱离 Amazon 网络。VPC 端点不需要互联网网关、虚拟私有网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。VPC 中的 Amazon EC2 实例无需公有 IP 地址便可与服务中的资源进行通信。

下图显示了当您使用 VPC 端点而不是互联网网关时,与 AWS 服务之间通信的工作原理。AWS PrivateLink 在子网内部预置弹性网络接口(ENI),而 VPC 路由规则用于通过 ENI 将任何与服务主机名之间的通信直接发送到目标 AWS 服务。此流量不再需要使用 NAT 网关或互联网网关。

图中显示了使用 AWS PrivateLink 的网络架构。

以下是与 Amazon ECS 服务结合使用的一些常用 VPC 端点。

许多其他 AWS 服务也支持 VPC 端点。如果您大量使用任何 AWS 服务,则应查看该服务的具体文档以及如何为该流量创建 VPC 端点。