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

Fargate 任务联网

使用 Fargate 的 Amazon ECS 任务需要 awsvpc 网络模式,该模式为每个任务提供弹性网络接口 (ENI) 和主要私有 IP 地址。在使用此网络模式运行任务或创建服务时,必须指定一个或多个要附加网络接口的子网以及一个或多个要应用于该网络接口的安全组。由于每个任务都有自己的 ENI,因此您也可以利用其他 Amazon EC2 联网功能(例如 VPC 流日志),以便您可以监控您任务的流量。此外,属于同一任务的容器可以通过 localhost 接口进行通信。一个任务在给定的时间只能有一个与之关联的 ENI。

如果您使用的是公有子网,请决定是否为网络接口提供公有 IP 地址。对于公有子网中拉取容器映像的 Fargate 任务,需要向该任务的弹性网络接口分配一个公有 IP 地址,还需要一个到 Internet 的路由,或一个可以将请求路由到 Internet 的 NAT 网关。对于私有子网中拉取容器映像的 Fargate 任务,私有子网需要连接 NAT 网关以将请求路由到 Internet。

以下是 Fargate 任务或服务的 networkConfiguration 部分的示例:

"networkConfiguration": { "awsvpcConfiguration": { "assignPublicIp": "ENABLED", "securityGroups": [ "sg-12345678" ], "subnets": [ "subnet-12345678" ] } }

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

创建的网络接口由 AWS Fargate 完全管理,并且存在用于为 Fargate 授予权限的关联的 IAM 策略。对于使用 Fargate 平台版本 1.4 或更高版本的任务,任务会接收单个 ENI(称为任务 ENI),所有网络流量都将流经 VPC 内的这个 ENI,并将通过 VPC 流日志对您可见。对于使用 Fargate 平台版本 1.3 及更早版本的任务,除了任务 ENI 外,任务还会收到单独的 Fargate 拥有的 ENI,该 ENI 用于某些在 VPC 流日志中不可见的网络流量。以下内容介绍网络流量行为以及每个平台版本所需的 IAM 策略。

操作

平台版本 1.3 及更早版本的流量

平台版本 1.4 的流量

IAM 权限

检索 Amazon ECR 登录凭证

Fargate 拥有的 ENI

任务 ENI

任务执行 IAM 角色

映像拉取

任务 ENI

任务 ENI

任务执行 IAM 角色

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

任务 ENI

任务 ENI

任务执行 IAM 角色

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

任务 ENI

任务 ENI

任务 IAM 角色

从 Secrets Manager 或 Systems Manager 检索密钥

Fargate 拥有的 ENI

任务 ENI

任务执行 IAM 角色

Amazon EFS 文件系统流量

不可用

任务 ENI

任务 IAM 角色

应用程序流量

任务 ENI

任务 ENI

任务 IAM 角色

Fargate 任务联网方面的考量

使用任务联网时,需要考虑多个因素。

  • 向 Amazon ECS 提供代表您调用其他 AWS 服务的权限需要 Amazon ECS 服务相关角色。此角色是在创建集群时 (或者在 AWS 管理控制台 中创建或更新服务时) 自动为您创建的。有关更多信息,请参阅用于 Amazon ECS 的服务相关角色。您也可以使用以下 AWS 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 Reference 中的 AwsVpcConfiguration

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

  • 如果 VPC 已更新,例如更改所使用的 DHCP 选项集,并且您希望在使用该 VPC 的任务中使更改生效,则必须停止这些任务并启动新任务。

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