Amazon ECS
AWS Fargate 用户指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

任务定义注意事项

使用 Fargate 启动类型的任务并非支持所有可用的 Amazon ECS 任务定义参数。某些参数完全不受支持,而其他参数对于 Fargate 任务的行为则不同。

以下任务定义参数在 Fargate 任务中无效:

  • devices

  • disableNetworking

  • dnsSearchDomains

  • dnsServers

  • dockerSecurityOptions

  • dockerVolumeConfiguration

  • extraHosts

  • host

  • hostname

  • links

  • placementConstraints — 默认情况下,Fargate 任务分布在可用区中。

  • privileged

  • sharedMemorySize

  • tmpfs

重要

当任何任务定义参数不受支持时,假定该参数的任何子标志也不受支持。

以下任务定义参数在用于 Fargate 任务时具有不同的行为:

  • 在使用 logConfiguration 时,Fargate 任务唯一支持的 logDriverawslogs 日志驱动程序。

  • 在使用 linuxParameters 时,对于 capabilities,可使用 drop 参数,但不支持 add 参数。

  • 仅使用平台版本 1.1.0 或更高版本的 Fargate 任务支持 healthCheck 参数。

  • 如果您使用 portMappings 参数,则应仅指定 containerPorthostPort 可以留空或设置为与 containerPort 相同的值。

为确保您的任务定义可验证能否用于 Fargate 启动类型,可在注册任务定义时指定以下内容:

  • 在 AWS 管理控制台中,为 Requires Compatibilities (需要兼容性) 字段指定 FARGATE

  • 在 AWS CLI 中,为 --requires-compatibilities 选项指定 FARGATE

  • 在 API 中指定 requiresCompatibilities 标记。

网络模式

Fargate 任务定义需要将网络模式设置为 awsvpcawsvpc 网络模式会为每个任务提供它自己的弹性网络接口。创建服务或手动运行任务时还需要网络配置。有关更多信息,请参阅 awsvpc 网络模式的任务联网

任务 CPU 和内存

Fargate 任务定义需要您在任务级别指定 CPU 和内存。尽管您还可以在容器级别为 Fargate 任务指定 CPU 和内存,但这是可选项。只需在任务级别指定这些资源便可满足大多数使用案例。下表显示了任务级 CPU 和内存的有效组合。

CPU 值

内存值

256 (.25 vCPU)

0.5GB、1GB、2GB

512 (.5 vCPU)

1GB、2GB、3GB、4GB

1024 (1 vCPU)

2GB、3GB、4GB、5GB、6GB、7GB、8GB

2048 (2 vCPU)

4GB 到 16GB 之间(以 1GB 为增量)

4096 (4 vCPU)

8GB 到 30GB 之间(以 1GB 为增量)

日志记录

Fargate 任务定义只支持用于日志配置的 awslogs 日志驱动程序。此日志驱动程序会将您的 Fargate 任务配置为向 Amazon CloudWatch Logs 发送日志信息。下面显示了任务定义中配置 awslogs 日志驱动程序的代码段:

"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" }

有关在任务定义中使用 awslogs 日志驱动程序以将容器日志发送到 CloudWatch Logs 的更多信息,请参阅使用 awslogs 日志驱动程序

Amazon ECS 任务执行 IAM 角色

可以使用 Fargate 指定一个可选的任务执行 IAM 角色,以允许您的 Fargate 任务对 Amazon ECR 进行 API 调用。这些 API 调用会拉取容器映像并调用 CloudWatch 来存储容器应用程序日志。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色

示例任务定义

下面是用于设置 Web 服务器的示例任务定义 (使用 Fargate 启动类型):

{ "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "memory": "512", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ] }

任务存储