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

服务定义参数

服务定义将定义要用于您的服务的任务定义、该任务要运行的实例化的数量以及要与您的任务关联的负载均衡器(如果有)。

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "FARGATE", "platformVersion": "", "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "ENABLED" } }, "healthCheckGracePeriodSeconds": 0 }

注意

您可使用以下 AWS CLI 命令创建上述服务定义模板。

aws ecs create-service --generate-cli-skeleton

您可在服务定义中指定以下参数。

cluster

要在其上运行您的服务的集群的短名称或完整 Amazon 资源名称 (ARN)。如果您未指定集群,则采用默认集群。

serviceName

您的服务的名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。 一个集群中的服务不得重名,但您可在一个区域或多个区域的多个集群中拥有名称相似的服务。

taskDefinition

要在您的服务中运行的任务定义的 familyrevision (family:revision) 或完整 ARN。如果未指定 revision,将使用最新的 ACTIVE 修订。

loadBalancers

表示要用于您的服务的负载均衡器的负载均衡器对象。当前,对每个服务只能使用一个负载均衡器或目标组。在创建服务后,在服务定义中指定的负载均衡器名称或目标组 ARN、容器名称和容器端口是不可变的。

对于 传统负载均衡器,此对象必须包含负载均衡器名称、容器名称 (与在容器定义中显示的相同) 和容器端口才能从负载均衡器进行访问。将此服务中的任务放在容器实例上后,容器实例将注册到在此处指定的负载均衡器。

对于 应用程序负载均衡器 和 网络负载均衡器,此对象必须包含负载均衡器目标组 ARN、容器名称 (与在容器定义中显示的相同) 和容器端口才能从负载均衡器进行访问。将此服务中的任务放在容器实例上后,容器实例和端口组合将注册为在此处指定的目标组中的目标。

targetGroupArn

与服务关联的 Elastic Load Balancing 目标组的完整 Amazon 资源名称 (ARN)。

loadBalancerName

负载均衡器的名称。

containerName

要与负载均衡器关联的容器的名称(与在容器定义中显示的相同)。

containerPort

要与负载均衡器关联的容器上的端口。此端口必须对应于服务的任务定义中的 containerPort。您的容器实例必须允许端口映射的 hostPort 上的入口流量。

desiredCount

要在您的集群中放置并保持运行的指定任务定义的实例化数量。

clientToken

您为确保请求的幂等性而提供的唯一、区分大小写的标识符。最多允许 32 个 ASCII 字符。

launchType

运行您的服务的启动类型。如果没有指定任何类型,将默认使用 EC2。有关更多信息,请参阅 Amazon ECS 启动类型

platformVersion

运行您的服务的平台版本。如果没有指定任何版本,将默认使用最新版本 (LATEST)。

AWS Fargate 平台版本用来指 Fargate 任务基础设施的特定运行时环境。在运行任务或创建服务的过程中指定 LATEST 平台版本时,您将获得可用于任务的最新平台版本。当您扩展服务时,这些任务将收到在服务的当前部署中指定的平台版本。有关更多信息,请参阅 AWS Fargate 平台版本

role

允许 Amazon ECS 代表您调用负载均衡器的 IAM 角色的名称或完整 Amazon 资源名称 (ARN)。当您要将负载均衡器用于服务时才需要此参数。如果您指定 role 参数,还必须指定具有 loadBalancers 参数的负载均衡器对象。

如果您的指定角色的路径并非 /,则必须指定完整角色 ARN(推荐)或将此路径作为角色名称的前缀。例如,如果名称为 bar 的角色的路径为 /foo/,您应指定 /foo/bar 作为角色名称。有关更多信息,请参阅 IAM 用户指南 中的易记名称和路径

deploymentConfiguration

可选部署参数,用于控制部署期间运行的任务数以及停止和开始任务的顺序。

maximumPercent

maximumPercent 参数以 desiredCount 百分比的形式表示部署期间允许处于 RUNNINGPENDING 状态的服务任务数的上限(向下取整到最近的整数)。此参数使您能够定义部署批次大小。例如,如果您的服务的任务 desiredCount 为 4,maximumPercent 值为 200%,则计划程序将在停止 4 个旧任务之前开始 4 个新任务(前提是具有执行此操作所需的集群资源)。maximumPercent 的默认值为 200%。

部署期间的最大任务数为 desiredCount 乘以 maximumPercent/100(向下取整到最近的整数值)。

minimumHealthyPercent

minimumHealthyPercentdesiredCount 的百分比形式表示部署期间必须保持在 RUNNING 状态的服务任务数的下限(向上取整到最近的整数)。此参数使您不必使用额外的集群容量就能部署。例如,如果您的服务的任务 desiredCount 为 4,minimumHealthyPercent 为 50%,则计划程序可能在开始两个新任务之前停止两个现有任务以释放集群容量。服务任务的状态如果为 RUNNING,而且使用负载均衡器,即为运行正常。服务任务的状态如果为 RUNNING确实使用了负载均衡器,同时托管负载均衡器的容器实例报告为正常,即为运行正常。minimumHealthyPercent 的默认值在控制台中为 50%,在 AWS CLI、AWS 软件开发工具包和 API 中为 100%。

部署期间的最小正常任务数为 desiredCount 乘以 minimumHealthyPercent/100 (向上取整到最近的整数值)。

placementConstraints

您的服务中的任务使用的一组放置约束对象。对于每个任务,您可以指定多达 10 种约束 (此限制包括任务定义中的约束和这些在运行时指定的约束)。如果您使用的是 Fargate 启动类型,则不支持任务放置约束。

placementStrategy

您的服务中的任务所用的放置策略对象。对于每项服务,您最多可以指定 4 种策略。

networkConfiguration

服务的网络配置。对于使用 awsvpc 网络模式接收其自己的弹性网络接口的任务定义,此参数是必需的,其他网络模式不支持此参数。如果使用 Fargate 启动类型,则需要 awsvpc 网络模式。有关更多信息,请参阅 awsvpc 网络模式的任务联网

awsvpcConfiguration

表示任务或服务的子网和安全组的对象。

subnets

与任务或服务相关联的子网。

securityGroups

与任务或服务相关联的安全组。如果您未指定安全组,将使用 VPC 的默认安全组。

healthCheckGracePeriodSeconds

在任务首次启动后,Amazon ECS 服务计划程序在此时间段内 (以秒为单位) 将忽略不正常的 Elastic Load Balancing 目标运行状况检查。您的服务只有配置为使用负载均衡器时此设置才适用。如果您的服务的任务需要一段时间才能启动和响应运行状况检查,则您最长可以指定 7,200 秒的运行状况检查宽限期,在此期间,ECS 服务计划程序将忽略运行状况检查状态。此宽限期可防止 ECS 服务计划程序将由于时间不足尚未启动的任务标记为不正常并停止它们。