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

创建表达式,以为 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']