本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
服务定义参数
服务定义定义了如何运行您的 Amazon ECS 服务。以下参数可以 在服务定义中指定。
启动类型
launchType
-
类型:字符串
有效值:
EC2
|FARGATE
必需:否
运行您的服务的启动类型。如果没有指定启动类型,将默认使用
EC2
。有关更多信息,请参阅 Amazon ECS 启动类型。如果指定
launchType
,必须省略capacityProviderStrategy
参数。
产能提供商战略
capacityProviderStrategy
-
类型: 对象阵列
必填: 否
用于服务的能力提供商策略。
能力提供商策略由一个或多个能力提供商组成 以及
base
和weight
给他们分配。容量提供程序必须与要在 产能提供商战略。PutClusterCapacityProvidersAPI用于 将容量提供商与群集相关联。只有容量提供商 一个ACTIVE
或UPDATING
状态。如果
capacityProviderStrategy
具体说明,launchType
必须省略参数。如果否capacityProviderStrategy
或launchType
是 具体说明,defaultCapacityProviderStrategy
为 使用。如果指定容量提供商使用自动扩展组, 能力提供程序必须已创建。新的产能供应商 使用CreateCapacityProviderAPI操作创建。
若要使用 AWS Fargate 能力提供商,请具体说明
FARGATE
或FARGATE_SPOT
能力提供商。的 AWS Fargate 所有客户均可使用容量提供商,只需要 与要使用的群集相关联。PutClusterCapacityProvidersAPI操作用于更新列表 群集之后 已创建。
capacityProvider
-
类型: 串
必填: 是
全名或全名 ARN 能力提供商。
weight
-
类型: 整数
有效范围: 整数介于0和1,000之间。
必填: 否
权重值表示 应使用指定 容量提供商。
例如,如果您的策略包含两个能力 并且两者的权重均为1,然后当碱 满足感,任务将平均分为两个 能力提供商。如果您指定了 重量1 能力ProviderA 和a 重量4 capacityProviderB,然后 每一项使用 能力ProviderA,四项任务将使用 capacityProviderB.
base
-
类型: 整数
有效范围: 整数介于0和100,000之间。
必填: 否
基本值表示至少要运行的任务数量 提供特定容量的产品。仅一家容量供应商 能力提供者策略中可以定义基础。
任务定义
taskDefinition
-
类型: 串
必填: 否
的
family
和revision
(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
策略。更多信息,请参阅 服务计划程序概念.有两种服务计划程序策略可用:
所需计数
desiredCount
-
类型: 整数
必填: 否
要放置的指定任务定义的实例化数量和 继续在您的群集上运行。
如果
REPLICA
计划策略 使用。如果服务使用DAEMON
计划策略, 此参数是可选的。
部署配置
deploymentConfiguration
-
类型: 对象
必填: 否
可选部署参数,控制在 部署以及停止和启动任务的顺序。
maximumPercent
-
类型: 整数
必填: 否
如果服务使用滚动更新(
ECS
) 部署类型,maximumPercent
参数 表示服务任务数量上限 可以RUNNING
或PENDING
部署期间的状态,作为 占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
放置策略,有效值是cpu
和memory
。对于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
网络模式是必需的。对于 更多信息,请参阅 Amazon ECS 任务联网..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
-
类型: 串
必填: 否
已在任务中指定的容器名称值 定义,用于服务发现服务。如果 您的服务任务指定的任务定义使用
bridge
或host
网络模式, 必须指定containerName
和containerPort
任务组合 定义。如果您的服务任务 指定使用awsvpc
网络模式和类型 使用SRVDNS记录,您必须指定containerName
和containerPort
联合或aport
数值,但两者均不相同。 containerPort
-
类型: 整数
必填: 否
已在任务定义中指定的端口值, 用于服务发现服务。如果任务 定义您的服务任务指定使用
bridge
或host
网络模式, 必须指定containerName
和containerPort
任务组合 定义。如果服务任务指定了任务定义 使用awsvpc
网络模式和类型SRV的DNS 记录,您必须指定containerName
和containerPort
联合或aport
数值,但两者均不相同。
客户代号
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