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

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

Amazon ECS 任务放置 限制

A 任务放置限制 是考虑的规则 在任务放置期间。当 运行任务或创建新服务。任务放置限制可以是 更新现有服务。更多信息,请参阅 Amazon ECS 任务放置.

限制类型

Amazon ECS 支持以下类型的任务放置限制:

distinctInstance

将每个任务放在不同的容器实例上。这项任务 可在运行任务或 创建新服务。

memberOf

将任务放在满足expression的容器实例上。对于 有关限制表达语法的更多信息,请参阅 集群查询语言.

memberOf 任务放置限制可以是 具体说明如下:

  • 运行任务

  • 创建新服务

  • 创建新任务定义

  • 为现有任务创建新修订版本 定义

Attributes

您可以将自定义元数据添加到容器实例,称为 属性. 每个属性都有一个名称和一个可选 串值。您可以使用以下提供的内置属性 Amazon ECS 或定义 自定义属性。

内建属性

Amazon ECS 自动应用以下属性到您的容器 实例。

ecs.ami-id

用于启动实例的AMIID。示例 该属性的值是 ami-1234abcd.

ecs.availability-zone

实例的可用性区域。示例值 这个属性是 us-east-1a.

ecs.instance-type

实例的实例类型。示例值 属性是 g2.2xlarge.

ecs.os-type

实例的操作系统。可能的值 这个属性是 linuxwindows.

ecs.cpu-architecture

实例的CPU架构。可能的值 这个属性是 x86_64arm64.

ecs.vpc-id

实例启动的VPC到。示例值 这个属性是 vpc-1234abcd.

ecs.subnet-id

实例正在使用的子网络。示例值 属性是 subnet-1234abcd.

可选属性

Amazon ECS 可以将以下属性添加到容器实例。

ecs.awsvpc-trunk-id

如果存在此属性,则实例具有主干网络 接口。更多信息,请参阅 弹性网口集群.

ecs.outpost-arn

如果存在此属性,则它包含 Amazon Resource Name (ARN) 的 Outpost. 更多信息,请参阅 AWS Outposts 上的 Amazon Elastic Container Service.

自定义属性

您可以将自定义属性应用于容器实例。例如, 您可以定义一个属性,其名称为“堆栈”,值为 “生产”。

在指定自定义属性时,应 考虑。

  • name 必须包含1到128个字符 且名称可能包含字母(大写字母和小写)、数字、 连字符、下划线、正斜线、正斜线或 期。

  • value 必须包含1到128个字符 并且可能包含字母(大写字母和小写)、数字、连字符、 下划线、句点、符号(@)、正斜线、正斜线、正斜线、 结肠或空间。值不能包含任何前导或尾随 空白。

添加属性

您可以在实例注册时使用 容器代理或手动,使用 AWS 管理控制台. 更多关于 使用容器代理,请参阅 Amazon ECS 容器代理配置参数.

使用控制台添加自定义属性

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 在导航面板中,选择 和 选择群集。

  3. ECS实例 选项卡,选中复选框 容器实例。

  4. 选择 行动, 查看/编辑 属性.

  5. 对于每个属性,执行以下操作:

    1. 选择 添加属性.

    2. 输入属性的名称和值并选择 复选标记图标。

  6. 完成添加属性后,选择 关闭.

使用添加自定义属性 AWS CLI

以下示例演示如何使用 归因 命令。

示例: 单一属性

以下示例将自定义属性“stack=prod”添加到 默认群集中的指定容器实例。

aws ecs put-attributes --attributes name=stack,value=prod,targetId=arn

示例: 多个属性

以下示例添加了自定义属性“stack=prod”,以及 默认设置下,“项目=a”到指定容器实例 群集。

aws ecs put-attributes --attributes name=stack,value=prod,targetId=arn name=project,value=a,targetId=arn

按属性筛选

您可以为容器实例应用过滤器,以便查看 自定义属性。

使用控制台按属性筛选容器实例

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 选择包含容器实例的群集。

  3. 选择 ECS实例.

  4. 通过选择“档位”图标( )并选择要显示的属性。这 设置在与您的 账户。

  5. 使用 按属性筛选 文本字段,输入 或选择您要通过筛选的属性。格式必须为 属性名称:属性值.

    对于 按属性筛选,输入或选择 实体来筛选。选择属性名称后, 会提示输入属性值。

  6. 根据需要向筛选器添加附加实体。删除属性 选择 X 旁边。

使用按属性筛选容器实例 AWS CLI

以下示例说明了如何筛选容器实例 属性 列表容器实例 命令。更多关于 筛选器语法,请参阅 集群查询语言.

示例: 内建属性

以下示例使用内置属性列出g2.2xlarge 实例。

aws ecs list-container-instances --filter "attribute:ecs.instance-type == g2.2xlarge"

示例: 自定义属性

以下示例列出了具有自定义属性的实例 “stack=prod”。

aws ecs list-container-instances --filter "attribute:stack == prod"

示例: 排除属性值

以下示例列出了具有自定义属性的实例 “堆栈”,除非属性值是“prod”。

aws ecs list-container-instances --filter "attribute:stack != prod"

示例: 多个属性值

以下示例使用内置属性列出 类型 t2.smallt2.medium.

aws ecs list-container-instances --filter "attribute:ecs.instance-type in [t2.small, t2.medium]"

示例: 多个属性

以下示例使用内置属性在中列出T2实例 东部1a可用区。

aws ecs list-container-instances --filter "attribute:ecs.instance-type =~ t2.* and attribute:ecs.availability-zone == us-east-1a"

任务组

您可以将一组相关任务确定为 任务组. 执行时,具有相同任务组名称的所有任务都被视为一组 铺垫。例如,假设您在 集中的应用程序,例如数据库和Web服务器。确保 数据库在各可用区之间平衡,将其添加到任务组 名为“数据库”,然后使用此任务组作为任务的约束 放置。

当您使用 RunTaskStartTask 操作,您可以指定任务组的名称 任务。如果您不为任务指定任务组,则默认名称 是任务定义的姓氏(例如, family:my-task-definition)。

对于服务调度程序启动的任务,任务组名称是 (例如, service:my-service-name)。

Limits

  • 任务组名称必须为255个字符或更少。

  • 每个任务可以完全分为一组。

  • 启动任务后,您不能修改其任务组。

示例约束

以下是任务放置限制示例。

此示例使用 memberOf 将任务放在T2上的限制 实例。可以通过以下操作来指定: 创建服务, 更新服务, 登记任务定义、和 运行任务.

"placementConstraints": [ { "expression": "attribute:ecs.instance-type =~ t2.*", "type": "memberOf" } ]

该示例使用 memberOf 将任务置于 实例 databases 任务组。它可以通过 采取以下行动: 创建服务, 更新服务, 登记任务定义、和 运行任务.

"placementConstraints": [ { "expression": "task:group == databases", "type": "memberOf" } ]

distinctInstance 约束将组中每个任务放置在 不同的实例。可以通过以下操作来指定: 创建服务, 更新服务、和 运行任务

"placementConstraints": [ { "type": "distinctInstance" } ]