创建表达式,以为 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 |
模式不匹配 |
注意
单个表达式不能包含圆括号。但是,可以使用圆括号来指定复合表达式中的优先顺序。
参数
很多运算符的参数是一个文本值。
in
和 not_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']