服务定义参数 - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

服务定义参数

服务定义定义了如何运行您的 Amazon ECS 服务。以下参数可以 在服务定义中指定。

启动类型

launchType

类型:字符串

有效值:EC2 | FARGATE

必需:否

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

如果指定 launchType,必须省略 capacityProviderStrategy 参数。

产能提供商战略

capacityProviderStrategy

类型: 对象阵列

必填: 否

用于服务的能力提供商策略。

能力提供商策略由一个或多个能力提供商组成 以及 baseweight 给他们分配。容量提供程序必须与要在 产能提供商战略。PutClusterCapacityProvidersAPI用于 将容量提供商与群集相关联。只有容量提供商 一个 ACTIVEUPDATING 状态。

如果 capacityProviderStrategy 具体说明, launchType 必须省略参数。如果否 capacityProviderStrategylaunchType 是 具体说明, defaultCapacityProviderStrategy 为 使用。

如果指定容量提供商使用自动扩展组, 能力提供程序必须已创建。新的产能供应商 使用CreateCapacityProviderAPI操作创建。

若要使用 AWS Fargate 能力提供商,请具体说明 FARGATEFARGATE_SPOT 能力提供商。的 AWS Fargate 所有客户均可使用容量提供商,只需要 与要使用的群集相关联。

PutClusterCapacityProvidersAPI操作用于更新列表 群集之后 已创建。

capacityProvider

类型: 串

必填: 是

全名或全名 ARN 能力提供商。

weight

类型: 整数

有效范围: 整数介于0和1,000之间。

必填: 否

权重值表示 应使用指定 容量提供商。

例如,如果您的策略包含两个能力 并且两者的权重均为1,然后当碱 满足感,任务将平均分为两个 能力提供商。如果您指定了 重量1 能力ProviderA 和a 重量4 capacityProviderB,然后 每一项使用 能力ProviderA,四项任务将使用 capacityProviderB.

base

类型: 整数

有效范围: 整数介于0和100,000之间。

必填: 否

基本值表示至少要运行的任务数量 提供特定容量的产品。仅一家容量供应商 能力提供者策略中可以定义基础。

任务定义

taskDefinition

类型: 串

必填: 否

familyrevision (family:revision)或完整 Amazon 资源名称 (ARN) 任务定义 在服务中运行。如果 revision 未指定, 最新 ACTIVE 使用指定系列的修订版。

在使用滚动更新时,必须指定任务定义 (ECS)部署控制员。

平台版本

platformVersion

类型:字符串

必需:否

正在运行服务中任务的平台版本。仅为使用 Fargate 启动类型的任务指定平台版本。如果没有指定任何版本,将默认使用最新版本 (LATEST)。

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

注意

不会使用 EC2 启动类型为任务指定平台版本。

Cluster

cluster

类型:字符串

必需:否

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

服务名称

serviceName

类型:字符串

必需:是

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

计划策略

schedulingStrategy

类型: 串

有效值: REPLICA | DAEMON

必填: 否

使用的调度策略。如果未指定调度策略, 的 REPLICA 策略。更多信息,请参阅 服务调度员概念.

有两种服务计划程序策略可用:

  • REPLICA—副本计划策略在群集上放置并维护所需数量的任务。默认情况下,服务计划程序可在多个可用区之间分布任务。您可以使用任务放置策略和约束自定义任务放置决策。有关更多信息,请参阅Replica

  • DAEMON—守护程序计划策略只在每个活动容器实例上部署一个任务,以满足您在群集中指定的所有任务放置约束。当使用此策略时,无需指定所需的任务数、任务放置策略,也无需使用服务 Auto Scaling 策略。有关更多信息,请参阅Daemon

    注意

    Fargate 任务不支持 DAEMON 计划策略。

所需计数

desiredCount

类型: 整数

必填: 否

要放置的指定任务定义的实例化数量和 继续在您的群集上运行。

如果 REPLICA 计划策略 使用。如果服务使用 DAEMON 计划策略, 此参数是可选的。

部署配置

deploymentConfiguration

类型: 对象

必填: 否

可选部署参数,控制在 部署以及停止和启动任务的顺序。

maximumPercent

类型: 整数

必填: 否

如果服务使用滚动更新(ECS) 部署类型, maximumPercent 参数 表示服务任务数量上限 可以 RUNNINGPENDING 部署期间的状态,作为 占 desiredCount (向下舍入到 最接近的整数)。该参数使您能够定义 部署批处理大小。例如,如果您的服务使用 REPLICA 服务调度程序,并具有 desiredCount 四项任务, maximumPercent 200%的值,调度员可能 开始四个新任务,然后停止四个旧任务 (前提是,完成此操作所需的群集资源是 可用)。默认 maximumPercent 价值 使用 REPLICA 服务调度程序是 200%。

如果您的服务使用 DAEMON 服务 调度程序类型, maximumPercent 应保持在 100%,这是默认值。

部署期间的最大任务数量是 desiredCount 乘以 maximumPercent/100,向下修约至最接近的 整数值。

如果服务使用蓝色/绿色 (CODE_DEPLOY)或 EXTERNAL 使用 EC2 启动 类型, 最大百分比 价值 设置为默认值,用于定义上限 服务中保留的任务数量限制 的 RUNNING 容器实例处于 在 DRAINING 州。如果服务中的任务 使用 Fargate 启动类型,最大百分比 虽然在描述您的 服务。

minimumHealthyPercent

类型: 整数

必填: 否

如果服务使用滚动更新(ECS) 部署类型, minimumHealthyPercent 表示服务任务数量的下限 必须保留在 RUNNING 状态 部署占 desiredCount (四舍五入至最接近的整数) 此参数使您能够 部署,无需使用额外的群集容量。对于 例如,如果您的服务 desiredCount 第页,共4页 任务和 minimumHealthyPercent 50%, 服务调度程序可以停止两个现有任务,以释放群集 才能开始两个新任务。

服务 不要 使用负荷 平衡器,应注意以下几点:

  • 如果一切必要,则服务被视为健康 服务任务中的容器会传递 健康检查。

  • 如果某个任务没有带有健康的必备容器 检查已定义,服务调度程序将等待40 任务到达 RUNNING 任务被计入最小值之前的状态 总健康百分比。

  • 如果任务有一个或多个带有 定义的健康检查,服务调度程序将等待 使任务在计数之前达到健康状态 它朝向最小健康百分比总和。任务是 当所有必需的容器 任务已通过健康检查。药量 服务调度程序可等待的时间由 容器健康检查设置。更多 信息,请参阅 健康检查.

对于服务来说, 使用负荷 平衡器,应注意以下几点:

  • 如果某个任务没有带有健康的必备容器 检查已定义,服务调度程序将等待 负载平衡器目标组运行状况检查返回 健康状态,然后再将任务计入 总健康百分比最低值。

  • 如果某个任务有一个基本的容器, 检查已定义,服务调度程序将等待 达到健康状态的任务和负载平衡器 目标群体健康检查,以恢复健康状态 然后再将任务计算在最小健康 总百分比。

复制服务的默认值 minimumHealthyPercent 为100%。默认 minimumHealthyPercent 服务的价值,使用 的 DAEMON 服务时间表为0%, AWS CLI, 以及API的50% AWS 管理控制台.

部署期间最少的健康任务数量是 desiredCount 乘以 minimumHealthyPercent/100,向上修约至 最接近的整数值。

如果服务使用蓝色/绿色 (CODE_DEPLOY)或 EXTERNAL 使用 EC2 启动 类型, 最小健康 百分比 值设置为默认值, 用于定义任务数量下限 服务 RUNNING 状态,而 容器实例位于 DRAINING 州。如果 服务中的任务使用 Fargate 启动 类型,未使用最低健康百分比值,尽管 在描述您的服务时返回。

部署控制员

deploymentController

类型: 对象

必填: 否

用于服务的部署控制员。如果没有 控制者, ECS 使用controller。更多 信息,请参阅 Amazon ECS 部署类型.

type

类型: 串

有效值: ECS | CODE_DEPLOY | EXTERNAL

必填:是

要使用的部署控制器类型。有三个 可用的部署控制类型:

ECS

滚动更新(ECS)部署 类型涉及替换当前运行的版本 最新版的容器。数字 容器 Amazon ECS 添加或删除服务 通过调整 健康任务的最小和最大数量 在服务部署期间允许使用,如 的 deploymentConfiguration.

CODE_DEPLOY

蓝色/绿色(CODE_DEPLOY) 部署类型使用蓝色/绿色部署模型 由 CodeDeploy,这允许您验证新的 在发送生产数据之前部署服务 流量。

EXTERNAL

外部部署类型使您能够使用 任何第三方部署控制员, 对部署流程的控制, Amazon ECS 服务。

任务放置

placementConstraints

类型: 对象阵列

必填: 否

一系列用于服务中任务的放置约束对象。每个任务最多可指定10个限制(此限制包括 任务定义中的限制和在运行时指定的限制)。如果您 使用的是 Fargate 启动类型、任务放置限制 不被支持。

type

类型: 串

必填: 否

约束类型。使用 distinctInstance 至 确保特定小组中的每个任务在 不同的容器实例。使用 memberOf 至 将选择限制为一组有效的候选人。价值观 distinctInstance 任务中不支持 定义。

expression

类型: 串

必填: 否

要应用于 约束。请注意,如果 约束类型是 distinctInstance。更多 信息,请参阅 集群查询语言.

placementStrategy

类型: 对象阵列

必填: 否

要用于服务任务的放置策略对象。您可以 为每个服务指定最多四个策略规则。

type

类型: 串

有效值: random | spread | binpack

必填: 否

放置策略的类型。的 random 放置策略随机将任务置于可用位置 候选人。的 spread 配售策略利差 根据 field 参数。的 binpack 策略将任务放在具备 最低可用资源数量,指定 的 field 参数。例如,如果您在 内存中,任务被放在实例上,数量最少 剩余内存(但仍足以运行任务)。

field

类型: 串

必填: 否

用于应用放置策略的字段。对于 spread 放置策略,有效值是 instanceId (或 host,它具有 相同效果),或任何平台或自定义属性 应用于容器实例,例如 attribute:ecs.availability-zone。对于 binpack 放置策略,有效值是 cpumemory。对于 random 放置策略,这个领域 使用。

Tags

tags

类型:对象数组

必需:否

您应用于服务以帮助您对其进行分类和组织的元数据。每个标签都包含您定义的一个键和一个可选值。在服务被删除时,标签也会随之被删除。该服务最多可应用 50 个标签。有关更多信息,请参阅 标记您的 Amazon ECS 资源

key

类型:字符串

长度约束:最小长度为 1。长度上限为 128。

必需:否

构成标签的键-值对的一个部分。键是一种常见的标签,行为类似于更具体的标签值的类别。

value

类型:字符串

长度约束:最小长度为 0。长度上限为 256。

必需:否

构成标签的键-值对的可选部分。值充当标签类别(键)中的描述符。

enableECSManagedTags

类型: 布尔

有效值: true | false

必填: 否

指定是否启用 Amazon ECS 任务的管理标签 服务。如果没有指定值,则默认值为 false. 更多信息,请参阅 为您的资源添加标签 开票.

propagateTags

类型:字符串

有效值:TASK_DEFINITION | SERVICE

必需:否

指定是否要将标签从任务定义或服务复制到服务中的任务。如果未指定值,则不会复制标签。只能在创建服务的过程中将标签复制到服务中的任务。要在创建服务以后将标签添加到任务,请使用 TagResource API 操作。

网络配置

networkConfiguration

类型: 对象

必填: 否

服务的网络配置。此参数对于 使用 awsvpc 网络模式接收 他们自己的弹性网络界面,其他 网络模式。如果使用 Fargate 启动类型, awsvpc 网络模式是必需的。对于 更多信息,请参阅 与的任务交流 awsvpc 网络 模式..

awsvpcConfiguration

类型: 对象

必填: 否

对象表示 任务或服务。

subnets

类型: 串

必填: 是

与任务或服务关联的子网络。最多可指定16个子网络 每 awsvpcConfiguration.

securityGroups

类型: 串

必填: 否

与任务或 服务。如果您不指定授权组, 使用VPC的默认授权组。有 最多只能指定5个授权组, 每 awsvpcConfiguration.

assignPublicIP

类型: 串

有效值: ENABLED | DISABLED

必填: 否

任务的弹性网络界面 接收公共IP地址。如果没有值 指定,默认值 DISABLED 使用。

healthCheckGracePeriodSeconds

类型:整数

必需:否

在任务进入 RUNNING 状态后,Amazon ECS 服务计划程序应忽略不正常的 Elastic Load Balancing 目标运行状况检查、容器运行状况检查以及 Route 53 运行状况检查的时间段(以秒为单位)。您的服务只有配置为使用负载均衡器时此设置才适用。如果您的服务定义了负载均衡器,并且您没有指定运行状况检查宽限期值,则使用默认值 0

如果您的服务的任务需要一段时间才能启动和响应运行状况检查,则您最长可以指定 2,147,483,647 秒的运行状况检查宽限期,在此期间,ECS 服务计划程序将忽略运行状况检查状态。此宽限期可防止 ECS 服务计划程序将由于时间不足尚未启动的任务标记为不正常并停止它们。

loadBalancers

类型: 对象阵列

必填: 否

一个负载平衡器对象,表示要与 服务。对于使用 应用程序负载均衡器 或 网络负载均衡器,限制为五名 您可以附加至服务的目标组。

创建服务后,负载平衡器名称或目标组ARN, 在服务定义中指定的容器名称和容器端口为 不可变。

对于 传统负载均衡器,此对象必须包含负载平衡器名称、容器 名称(出现在容器定义中),以及容器 访问负载平衡器。当此服务中的任务放置在 容器实例,容器实例已在加载中注册 在此处指定的平衡器。

对于 应用程序负载均衡器和 网络负载均衡器,此对象必须包含负载平衡器目标 组ARN、容器名称(如容器定义中所示),以及 从负载平衡器访问的容器端口。当这个任务 服务放在容器实例、容器实例和端口上 组合在指定的目标组中注册为目标 此处为。

targetGroupArn

类型: 串

必填: 否

全套 ARN 的 Elastic Load Balancing 与 服务。

仅当使用 应用程序负载均衡器 或 网络负载均衡器. 如果您使用 传统负载均衡器 目标组ARN应 省略。

loadBalancerName

类型: 串

必填: 否

要与 服务。

仅当使用 传统负载均衡器. 如果 您正在使用 应用程序负载均衡器 或a 网络负载均衡器 负载平衡器名称 参数应省略。

containerName

类型: 串

必填: 否

容器的名称(如容器中所示) 定义)以与负载平衡器相关联。

containerPort

类型: 整数

必填: 否

容器上的端口,用于与负载平衡器相关联。此端口必须对应 containerPort 在 服务中的任务使用的任务定义。对于使用 的 EC2 启动类型,容器实例必须 允许进入交通 hostPort 的 映射。

role

类型:字符串

必需:否

允许 Amazon ECS 代表您调用负载均衡器的 IAM 角色的名称或完整 ARN。仅当您在服务中使用负载均衡器且任务定义未使用 awsvpc 网络模式时,才允许使用此参数。如果您指定 role 参数,还必须指定具有 loadBalancers 参数的负载均衡器对象。

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

重要

如果您的账户已创建 Amazon ECS 服务相关角色,则默认情况下会为您的服务使用该角色,除非您在此处指定一个角色。如果您的任务定义使用 awsvpc 网络模式(在这种情况下,您不应在此处指定角色),则需要服务相关角色。有关更多信息,请参阅用于 Amazon ECS 的服务相关角色

serviceRegistries

类型: 对象阵列

必填: 否

您服务的服务发现配置的详细信息。对于 更多信息,请参阅 服务发现.

registryArn

类型: 串

必填: 否

的 ARN 服务登记项目。当前支持的 服务登记 AWS Cloud Map. 更多信息,请参阅 工作 服务AWS Cloud Map 开发人员指南.

port

类型: 整数

必填: 否

如果您的服务发现服务使用的端口值 指定SRV记录。如果 awsvpc 网络模式和SRV记录 使用。

containerName

类型: 串

必填: 否

已在任务中指定的容器名称值 定义,用于服务发现服务。如果 您的服务任务指定的任务定义使用 bridgehost 网络模式, 必须指定 containerNamecontainerPort 任务组合 定义。如果您的服务任务 指定使用 awsvpc 网络模式和类型 使用SRVDNS记录,您必须指定 containerNamecontainerPort 联合或a port 数值,但两者均不相同。

containerPort

类型: 整数

必填: 否

已在任务定义中指定的端口值, 用于服务发现服务。如果任务 定义您的服务任务指定使用 bridgehost 网络模式, 必须指定 containerNamecontainerPort 任务组合 定义。如果服务任务指定了任务定义 使用 awsvpc 网络模式和类型SRV的DNS 记录,您必须指定 containerNamecontainerPort 联合或a port 数值,但两者均不相同。

客户代号

clientToken

类型: 串

必填: 否

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

服务定义模板

下面显示了 Amazon ECS 服务定义。

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "FARGATE", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "spread", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "ENABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "SERVICE" }

您可以使用以下工具创建此服务定义模板 AWS CLI 命令。

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