创建表达式,以为 Amazon ECS 任务定义容器实例 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建表达式,以为 Amazon ECS 任务定义容器实例

集群查询是允许您将对象分组的表达式。例如,您可以按属性 (例如可用区、实例类型或自定义元数据) 将容器实例分组。有关更多信息,请参阅 Amazon ECS 容器实例属性

在您定义了一组容器实例后,可以自定义 Amazon ECS,根据组在容器实例上放置任务。有关更多信息,请参阅 将应用程序作为 Amazon ECS 任务运行使用控制台创建 Amazon ECS 服务。您还可以在列出容器实例时应用组筛选条件。

表达式语法

表达式有如下语法:

subject operator [argument]
主题

要评估的属性或字段。

agentConnected

按 Amazon ECS 容器代理连接状态选择容器实例。您可以使用此过滤器来搜索具有已断开连接的容器代理的实例。

有效运算符:equals (==)、not_equals (!=)、in、not_in (!in)、matches (=~)、not_matches (!~)

agentVersion

按 Amazon ECS 容器代理版本选择容器实例。您可以使用此过滤器查找运行过期版本的 Amazon ECS 容器代理的实例。

有效运算符:equals (==)、not_equals (!=)、greater_than (>)、greater_than_equal (>=)、less_than (<)、less_than_equal (<=)

attribute:attribute-name

按属性选择容器实例。有关更多信息,请参阅 Amazon ECS 容器实例属性

ec2InstanceId

按 Amazon EC2 实例 ID 选择容器实例。

有效运算符:equals (==)、not_equals (!=)、in、not_in (!in)、matches (=~)、not_matches (!~)

registeredAt

按容器实例注册日期选择容器实例。您可以使用此过滤器查找新注册的实例或已注册很久的实例。

有效运算符:equals (==)、not_equals (!=)、greater_than (>)、greater_than_equal (>=)、less_than (<)、less_than_equal (<=)

有效日期格式:2018-06-18T22:28:28+00:00、2018-06-18T22:28:28Z、2018-06-18T22:28:28、2018-06-18

runningTasksCount

按运行任务数选择容器实例。您可以使用此过滤器查找空或接近空的实例(在其上运行的任务很少)。

有效运算符:equals (==)、not_equals (!=)、greater_than (>)、greater_than_equal (>=)、less_than (<)、less_than_equal (<=)

task:group

按任务组选择容器实例。有关更多信息,请参阅 与组相关的 Amazon ECS 任务

运算符

比较运算符。支持以下运算符。

运算符

描述

==, equals

字符串相等

!=, not_equals

字符串不相等

>, greater_than

Greater than

>=, greater_than_equal

大于或等于

<, less_than

Less than

<=, less_than_equal

小于或等于

exists

主题存在

!exists, not_exists

主题不存在

in

值在参数列表中

!in, not_in

值不在参数列表中

=~, matches

模式匹配

!~, not_matches

模式不匹配

注意

单个表达式不能包含圆括号。但是,可以使用圆括号来指定复合表达式中的优先顺序。

参数

很多运算符的参数是一个文本值。

innot_in 运算符要求参数是一个参数列表。按如下所示指定参数列表:

[argument1, argument2, ..., argumentN]

matches 和 not_matches 运算符要求参数符合 Java 正则表达式的语法。有关更多信息,请参阅 java.util.regex.Pattern

复合表达式

您可以使用以下布尔值运算符组合表达式:

  • &&, 和

  • || 或者

  • !, 非

您可以使用圆括号指定优先顺序:

(expression1 or expression2) and expression3

表达式示例

以下为表达式示例。

示例:字符串相等

以下表达式选择具有指定实例类型的实例。

attribute:ecs.instance-type == t2.small
示例:参数列表

以下表达式选择在 us-east-1a 或 us-east-1b 可用区中的实例。

attribute:ecs.availability-zone in [us-east-1a, us-east-1b]
示例:复合表达式

以下表达式选择不在 us-east-1d 可用区内的 G2 实例。

attribute:ecs.instance-type =~ g2.* and attribute:ecs.availability-zone != us-east-1d
示例:任务关联

以下表达式选择在 service:production 组中托管任务的实例。

task:group == service:production
示例:任务反关联

以下表达式选择未在数据库组中托管任务的实例。

not(task:group == database)
示例:运行任务数

以下表达式选择仅运行一个任务的实例。

runningTasksCount == 1
示例:Amazon ECS 容器代理版本

以下表达式选择运行版本低于 1.14.5 的容器代理的实例。

agentVersion < 1.14.5
示例:实例注册时间

以下表达式选择在 2018 年 2 月 13 日前注册的实例。

registeredAt < 2018-02-13
示例:Amazon EC2 实例 ID

以下表达式选择具有以下 Amazon EC2 实例 ID 的实例。

ec2InstanceId in ['i-abcd1234', 'i-wxyx7890']