

# 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)을 참조하세요.

**연산자**  
비교 연산자. 다음의 연산자가 지원됩니다.


|  연산자  |  설명  | 
| --- | --- | 
|  ==, equals  |  문자열 같음  | 
|  \$1=, not\$1equals  |  문자열 다름  | 
|  >, greater\$1than  |  초과  | 
|  >=, greater\$1than\$1equal  |  크거나 같음  | 
|  <, less\$1than  |  미만  | 
|  <=, less\$1than\$1equal  |  작거나 같음  | 
|  exists  |  주체 있음  | 
|  \$1exists, not\$1exists  |  주체 없음  | 
|  in  |  인수 목록에 있는 값  | 
|  \$1in, not\$1in  |  인수 목록에 없는 값  | 
|  =\$1, matches  |  패턴 일치  | 
|  \$1\$1, not\$1matches  |  패턴 불일치  | 

**참고**  
단일 표현식은 괄호를 포함할 수 없습니다. 하지만 복합 표현식에서는 우선순위를 지정하기 위해 괄호를 사용할 수 있습니다.

**인수**  
많은 연산자에서 인수는 리터럴 값입니다.

`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, not

괄호를 사용하여 우선순위를 지정할 수 있습니다.

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

**예제: 태스크 비선호도**  
다음 표현식은 database 그룹에서 태스크를 호스팅하고 있지 않은 인스턴스를 선택합니다.

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