Fargate 任务联网 - Amazon ECS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Fargate 任务联网

重要

如果您正在使用托管在 Amazon EC2 实例上的 Amazon ECS 任务,请参阅《Amazon Elastic Container Service 开发人员指南》中的任务联网以了解与您的实例相关的联网信息。

预设情况下,Fargate 上的每个 Amazon ECS 任务都会提供 elastic network interface (ENI) 和主要私有 IP 地址。使用公有子网时,您可以选择向任务的 ENI 分配公有 IP 地址。如果您的 VPC 启用了双堆栈模式,并且您使用具有 IPv6 CIDR 块的子网,则您的任务 ENI 也将接收 IPv6 地址。一个任务在给定的时间只能有一个与之关联的 ENI。属于同一任务的容器可以通过 localhost 接口进行通信。有关 VPC 和子网的更多信息,请参阅 Amazon VPC 用户指南中的 VPC 和子网。

要使 Fargate 上的任务拉取容器映像,任务必须具有通往互联网的路由。下面说明如何验证您的任务具有通往互联网的路由。

  • 使用公有子网时,您可以向任务 ENI 分配公有 IP 地址。

  • 使用私有子网时,子网可以连接一个 NAT 网关。

  • 使用 Amazon ECR 中托管的容器映像时,您可以将 Amazon ECR 配置为使用接口 VPC 端点,将通过任务的私有 IPv4 地址进行映像提取 。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南中的Amazon ECR 接口 VPC 端点 (Amazon PrivateLink)

由于每个任务都有自己的 ENI,因此您可以使用联网功能(例如 VPC 流日志),以便可以监控您任务的流量。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 流日志

您还可以利用 Amazon PrivateLink。您可以配置 VPC 接口终端节点,以便可以通过私有 IP 地址访问 Amazon ECS API。Amazon PrivateLink 将 VPC 和 Amazon ECS 之间的所有网络流量限制在 Amazon 网络以内。您无需互联网网关、NAT 设备或虚拟私有网关。有关更多信息,请参阅 Amazon ECS 最佳实践指南中的 Amazon PrivateLink

有关如何将 NetworkConfiguration 资源与 Amazon CloudFormation 一起使用的示例,请参阅 使用单独的堆栈创建 Amazon ECS 资源

创建的 ENI 由 Amazon Fargate 完全托管。此外,还有一个关联的 IAM policy 用于向 Fargate 授予权限。对于使用 Fargate 平台版本 1.4.0 或更高版本的任务,任务会接收单个 ENI(称为任务 ENI),所有网络流量都将流经 VPC 内的这个 ENI。此流量记录在您的 VPC 流日志中。对于使用 Fargate 平台版本 1.3.0 及更早版本的任务,除了任务 ENI 外,任务还会收到单独的 Fargate 拥有的 ENI,该 ENI 用于某些在 VPC 流日志中不可见的网络流量。下表介绍网络流量行为以及每个平台版本所需的 IAM policy。

操作

Linux 平台版本 1.3.0 及更早版本的流量

Linux 平台版本 1.4.0 的流量

Windows 平台版本 1.0.0 的流量

IAM 权限

检索 Amazon ECR 登录凭据

Fargate 拥有的 ENI

任务 ENI

任务 ENI

任务执行 IAM 角色

镜像提取

任务 ENI

任务 ENI

任务 ENI

任务执行 IAM 角色

通过日志驱动程序发送日志

任务 ENI

任务 ENI

任务 ENI

任务执行 IAM 角色

通过适用于 Amazon ECS 的 FireLens 发送日志

任务 ENI

任务 ENI

任务 ENI

任务 IAM 角色

从 Secrets Manager 或 Systems Manager 中检索密码

Fargate 拥有的 ENI

任务 ENI

任务 ENI

任务执行 IAM 角色

Amazon EFS 文件系统流量

不可用

任务 ENI

任务 ENI

任务 IAM 角色

应用程序流量

任务 ENI

任务 ENI

任务 ENI

任务 IAM 角色

Fargate 任务联网注意事项

在使用任务联网时考虑以下事项。

  • Amazon ECS 服务链接角色需要为 Amazon ECS 提供代表您呼叫其他 Amazon 服务的权限。此角色是在创建集群时或者在 Amazon Web Services Management Console 中创建或更新服务时为您创建的。有关更多信息,请参阅对 Amazon ECS 使用服务相关角色。您也可以使用以下 Amazon CLI 命令创建服务相关角色。

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • 在 VPC 上启用 enableDnsHostnamesenableDnsSupport 选项时,Amazon ECS 使用 Amazon 提供的 DNS 主机名来填充任务的主机名。如果未启用这些选项,则任务的 DNS 主机名将被设置为随机主机名。有关 VPC 的 DNS 设置的更多信息,请参阅《Amazon VPC 用户指南》中的在 VPC 中使用 DNS

  • 您最多只能为 awsvpcConfiguration 指定 16 个子网和 5 个安全组。有关更多信息,请参阅 Amazon Elastic Container Service API 参考中的 AwsVpcConfiguration

  • 您不能手动分离或修改 Fargate 创建并附加的 ENI。这是为了防止意外删除与正在运行的任务关联的 ENI。要释放任务的 ENI,请停止该任务。

  • 如果 VPC 子网进行了更新以更改其使用的 DHCP 选项集,则无法将这些更改应用于使用 VPC 的现有任务。启动新任务,以在测试新更改的同时获得平稳迁移的新设置,然后在不需要回滚的情况下停止旧的任务。

  • 使用 Fargate 平台版本 1.4.0 或更高版本(对于 Linux)或者 1.0.0(对于 Windows)时,在具有 IPv6 CIDR 块的子网中启动的任务仅接收 IPv6 地址。

  • 对于使用平台版本 1.4.0 或更高版本(对于 Linux)或 1.0.0(对于 Windows)的任务,任务 ENI 支持巨型帧。网络接口配置了最大传输单元 (MTU),这是单个帧内将放入的最大负载的大小。MTU 越大,单个帧内可以放入的应用程序负载就越多,这可以减少每帧开销并提高效率。当您的任务和目标之间的网络路径支持巨型帧时,支持巨型帧将减少开销。

  • 任务使用 Fargate 启动类型的服务仅支持应用程序负载均衡器和网络负载均衡器。不支持经典负载均衡器。当您创建任何目标组时,必须选择 ip 而不是 instance 作为目标类型。有关更多信息,请参阅服务负载均衡

在双堆栈模式下使用 VPC

在双堆栈模式下使用 VPC 时,您的任务可通过 IPv4 /或 IPv6 或两者进行通信。IPv4 和 IPv6 地址是彼此独立的;您必须在 VPC 中分别针对 IPv4 和 IPv6 配置路由和安全设置。有关将 VPC 配置为双堆栈模式的更多信息,请参阅 Amazon VPC用户指南 中的迁移到 IPv6

如果满足以下条件,将向 Fargate 上的 Amazon ECS 任务分配 IPv6 地址:

  • 您的 VPC 和子网已为 IPv6 启用。有关如何将 VPC 配置为双堆栈模式的更多信息,请参阅《Amazon VPC 用户指南》 中的迁移到 IPv6

  • 任务或服务使用 Fargate 平台版本 1.4.0 或更高版本(用于 Linux)或 1.0.0(用于 Windows)。

  • dualStackIPv6 帐户设置为已启用。有关更多信息,请参阅账户设置

如果您使用互联网网关或仅限出现的互联网网关配置 VPC,分配了 IPv6 地址的 Fargate 上的 Amazon ECS 任务可以访问互联网。不需要 NAT 网关。有关更多信息,请参阅 Amazon VPC 用户用户指南中的互联网网关Egress-only 互联网网关