

# Amazon ECS タスク用のコンテナインスタンスを定義する式を作成する
<a name="cluster-query-language"></a>

クラスタークエリは、オブジェクトをグループ化できる式です。例えば、アベイラビリティーゾーン、インスタンスタイプ、カスタムメタデータなどの属性でコンテナインスタンスをグループ化できます。詳細については、「[Amazon ECS コンテナインスタンス属性](task-placement-constraints.md#attributes)」を参照してください。

コンテナインスタンスのグループを定義した後、グループに基づいてコンテナインスタンスのタスクを配置するように Amazon ECS をカスタマイズできます。詳細については「[Amazon ECS タスクとしてのアプリケーションの実行](standalone-task-create.md)」および「[Amazon ECS のローリング更新デプロイの作成](create-service-console-v2.md)」を参照してください。また、コンテナインスタンスをリスト表示する際にグループフィルタを適用できます。

## 式の構文
<a name="expression-syntax"></a>

式の構文は次のとおりです。

```
subject operator [argument]
```

**件名**  
評価する属性またはフィールド。

`agentConnected`  
Amazon ECS コンテナエージェント接続ステータスでコンテナインスタンスを選択します。このフィルタを使用して、切断されたコンテナエージェントでインスタンスを検索します。  
有効な演算子: equals (==)、not\$1equals (\$1=)、in、not\$1in (\$1in)、matches (=\$1)、not\$1matches (\$1\$1)

`agentVersion`  
Amazon ECS コンテナエージェントバージョンでコンテナインスタンスを選択します。このフィルタを使用して、Amazon ECS コンテナエージェントの古くなったバージョンを実行しているインスタンスを検索します。  
有効な演算子: equals (==)、not\$1equals (\$1=)、greater\$1than (>)、greater\$1than\$1equal (>=)、less\$1than (<)、less\$1than\$1equal (<=)

`attribute:attribute-name`  
属性でコンテナインスタンスを選択します。詳細については、「[Amazon ECS コンテナインスタンス属性](task-placement-constraints.md#attributes)」を参照してください。

`ec2InstanceId`  
Amazon EC2 インスタンス ID で、コンテナインスタンスを選択します。  
有効な演算子: equals (==)、not\$1equals (\$1=)、in、not\$1in (\$1in)、matches (=\$1)、not\$1matches (\$1\$1)

`registeredAt`  
コンテナインスタンス登録日で、コンテナインスタンスを選択します。このフィルタを使用して、新しく登録されたインスタンスまたは古いインスタンスを検索します。  
有効な演算子: equals (==)、not\$1equals (\$1=)、greater\$1than (>)、greater\$1than\$1equal (>=)、less\$1than (<)、less\$1than\$1equal (<=)  
有効な日付形式: 2018-06-18T22:28:28\$100:00、2018-06-18T22:28:28Z、2018-06-18T22:28:28、2018-06-18

`runningTasksCount`  
実行中のタスクの数でコンテナインスタンスを選択します。このフィルタを使用して、空またはほぼ空 (実行中のタスクがほぼない) のインスタンスを検索します。  
有効な演算子: equals (==)、not\$1equals (\$1=)、greater\$1than (>)、greater\$1than\$1equal (>=)、less\$1than (<)、less\$1than\$1equal (<=)

`task:group`  
コンテナインスタンスをタスクグループで選択します。詳細については、「[Amazon ECS タスクをグループ化する](task-groups.md)」を参照してください。

**オペレーター**  
比較演算子。以下の演算子がサポートされています。


|  演算子  |  説明  | 
| --- | --- | 
|  ==, が  |  文字列が等価  | 
|  \$1=、not\$1equals  |  文字列が不等価  | 
|  >、greater\$1than  |  以上  | 
|  >=、greater\$1than\$1equal  |  以上  | 
|  <、less\$1than  |  未満  | 
|  <=、less\$1than\$1equal  |  以下  | 
|  exists  |  対象が存在  | 
|  \$1exists、not\$1exists  |  サブジェクトが存在しません  | 
|  情報  |  引数リストの値  | 
|  \$1in、not\$1in  |  引数リストにない値  | 
|  =\$1、matches  |  パターンが一致  | 
|  \$1\$1、not\$1matches  |  パターンが不一致  | 

**注記**  
1 つの式に括弧を含めることはできません。ただし、複合式で優先順位を指定するために括弧を使用できます。

**引数**  
多くの演算子は、引数がリテラル値です。

`in` および `not_in` 演算子は、引数として引数リストを想定しています。次のように引数リストを指定します。

```
[argument1, argument2, ..., argumentN]
```

matches と not\$1matches 演算子は、Java の正規表現構文に準拠する引数を想定しています。詳細については、[java.util.regex.Pattern](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html) を参照してください。

**複合式**

次のブール演算子を使用して式を結合できます。
+ &&, および
+ \$1\$1, または
+ \$1, 先頭の文字に

括弧を使用して、優先度を指定できます。

```
(expression1 or expression2) and expression3
```

## 式の例
<a name="expression-examples"></a>

以下に式の例を示します。

**例: 文字列が等価**  
次の式は指定されたインスタンスタイプのインスタンスを選択します。

```
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)
```

**例: 実行中のタスクの数**  
次の式は、1 つのタスクのみを実行しているインスタンスを選択します。

```
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']
```