

# 为 Amazon ECS 托管实例上的任务分配网络接口。
AWSVPC 网络模式

 在 Amazon ECS 托管实例中使用 `awsvpc` 网络模式可简化容器联网，因为您可以更好地控制您的应用程序相互之间以及与 VPC 内的其他服务之间的通信方式。`awsvpc` 网络模式还为您的容器提供了更高的安全性，使您能够在任务中更精细地使用安全组和网络监视工具。

默认情况下，当实例类型支持中继时，每个 Amazon ECS 托管实例在启动期间都会附加一个中继弹性网络接口（ENI）作为主 ENI。有关支持 ENI 中继的实例类型的更多信息，请参阅[增加的 Amazon ECS 容器网络接口支持的实例](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/eni-trunking-supported-instance-types.html)。

**注意**  
如果所选实例类型不支持中继型ENI，则实例将使用常规 ENI 启动。

实例上运行的每个任务都会接收自己的附加到中继 ENI 的 ENI 以及主私有 IP 地址。如果您的 VPC 配置了双堆栈模式，并且您使用具有 IPv6 CIDR 数据块的子网，则 ENI 也会接收 IPv6 地址。使用公有子网时，您可以选择通过为子网启用 IPv4 公有寻址来向 Amazon ECS 托管实例主 ENI 分配公有 IP 地址。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[修改子网的 IP 寻址属性](https://docs.amazonaws.cn//vpc/latest/userguide/subnet-public-ip.html)。一个任务在给定的时间只能有一个与之关联的 ENI。

 属于同一任务的容器可以通过 `localhost` 接口进行通信。有关 VPC 和子网的更多信息，请参阅《Amazon VPC 用户指南》**中的 [Amazon VPC 的工作原理](https://docs.amazonaws.cn/vpc/latest/userguide/how-it-works.html)

以下操作使用附加到实例的主 ENI：
+ **映像下载**：可通过主 ENI 从 Amazon ECR 下载容器映像。
+ **密钥检索**：可通过主 ENI 检索 Secrets Manager 密钥和其他凭证。
+ **日志上传**：日志通过主 ENI 上传到 CloudWatch。
+ **环境文件下载**：可通过主 ENI 下载环境文件。

应用程序流量流经任务 ENI。

由于每个任务都有自己的 ENI，因此您可以使用联网功能（例如 VPC 流日志），以便可以监控您任务的流量。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 流日志](https://docs.amazonaws.cn/vpc/latest/userguide/flow-logs.html)。

您还可以利用 Amazon PrivateLink。您可以配置 VPC 接口端点，以便可以通过私有 IP 地址访问 Amazon ECS API。Amazon PrivateLink 将 VPC 和 Amazon ECS 之间的所有网络流量限制在 Amazon 网络以内。您无需互联网网关、NAT 设备或虚拟私有网关。有关更多信息，请参阅 [Amazon ECS 接口 VPC 端点（Amazon PrivateLink）](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/vpc-endpoints.html)。

`awsvpc` 网络模式还允许您在使用未附加中继 ENI 的实例类型时，利用 Amazon VPC Traffic Mirroring 来保护和监控网络流量。有关更多信息，请参阅《Amazon VPC Traffic Mirroring 指南》**中的 [What is Traffic Mirroring?](https://docs.amazonaws.cn/vpc/latest/mirroring/what-is-traffic-mirroring.html)。

## `awsvpc` 模式的注意事项

+ 任务需要使用 Amazon ECS 服务相关角色来管理 ENI。当您创建集群或服务时，系统会自动创建此角色。
+ 任务 ENI 由 Amazon ECS 管理，无法手动分离或修改。
+ 在运行独立任务（`RunTask`）或创建/更新服务（`CreateService`/`UpdateService`）时，不支持使用 `assignPublicIp` 为任务 ENI 分配公有 IP 地址。
+ 在任务级别配置 `awsvpc` 联网时，您必须使用与 Amazon ECS 托管实例容量提供程序的启动模板中指定的 VPC 相同的 VPC。您可以使用与启动模板中指定的子网和安全组不同的子网和安全组。
+ 对于 `awsvpc` 网络模式任务，在配置负载均衡器目标组时请使用 `ip` 目标类型。Amazon ECS 会自动管理支持的联网模式的目标组注册。

## 在双堆栈模式下使用 VPC


在双堆栈模式下使用 VPC 时，您的任务可通过 IPv4 或 IPv6 或两者进行通信。IPv4 和 IPv6 地址彼此独立。因此，您必须在 VPC 中分别针对 IPv4 和 IPv6 配置路由和安全设置。有关如何将 VPC 配置为双堆栈模式的更多信息，请参阅《Amazon VPC 用户指南》**中的[迁移到 IPv6](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-migrate-ipv6.html)。

如果您使用互联网网关或仅出站互联网网关配置 VPC，则可以在双堆栈模式下使用 VPC。通过这样做，分配了 IPv6 地址的任务可以通过互联网网关或仅限出口的互联网网关访问互联网。NAT 网关是可选项。有关更多信息，请参阅 *Amazon VPC 用户用户指南*中的[互联网网关](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_Internet_Gateway.html)和 [Egress-only 互联网网关](https://docs.amazonaws.cn/vpc/latest/userguide/egress-only-internet-gateway.html)。

如果满足以下条件，则向 Amazon ECS 任务分配 IPv6 地址：
+ 托管任务的 Amazon ECS 托管实例正在使用 `1.45.0` 或更高版本的容器代理。有关如何检查您的实例正在使用的代理版本以及根据需要进行更新的信息，请参阅[更新 Amazon ECS 容器代理](ecs-agent-update.md)。
+ `dualStackIPv6` 账户设置为已启用。有关更多信息，请参阅 [通过账户设置访问 Amazon ECS 功能](ecs-account-settings.md)。
+ 您的任务是使用 `awsvpc` 网络模式。
+ 您的 VPC 和子网已为 IPv6 配置。配置包括在指定子网中创建的网络接口。有关如何将 VPC 配置为双堆栈模式的更多信息，请参阅《Amazon VPC 用户指南》**中的[迁移到 IPv6](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-migrate-ipv6.html) 和[修改子网的 IPv6 寻址属性](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-ip-addressing.html#subnet-ipv6)。