Amazon ECS 태스크용 컨테이너 인스턴스를 정의하는 표현식 만들기

Amazon ECS 태스크용 컨테이너 인스턴스를 정의하는 표현식 만들기

클러스터 쿼리(cluster query) 표현식을 사용해 컨테이너 인스턴스를 그룹화하고, 태스크 배치·필터링에 사용하는 방법을 알아봐요.

출처: 문서

본문

클러스터 쿼리는 객체를 그룹화할 수 있게 하는 표현식이에요. 예를 들어 가용 영역, 인스턴스 유형, 사용자 지정 메타데이터 같은 속성으로 컨테이너 인스턴스를 그룹화할 수 있어요. 자세한 내용은 Amazon ECS container instance attributes 참고. 컨테이너 인스턴스 그룹을 정의한 후 Amazon ECS를 사용자 지정해 그룹을 기반으로 컨테이너 인스턴스에 태스크를 배치할 수 있어요. 자세한 내용은 Running an application as an Amazon ECS task와 Creating an Amazon ECS rolling update deployment 참고. 컨테이너 인스턴스를 나열할 때 그룹 필터를 적용할 수도 있어요.

표현식 문법 (Expression syntax)

표현식은 다음 문법을 가져요:

subject operator [argument]

Subject (주체)

평가할 속성 또는 필드.

agentConnected — Amazon ECS container agent 연결 상태로 컨테이너 인스턴스를 선택해요. 이 필터는 container agent가 연결이 끊긴 인스턴스를 검색하는 데 사용할 수 있어요. 유효한 연산자: equals(==), not_equals(!=), in, not_in(!in), matches(=~), not_matches(!~)

agentVersion — Amazon ECS container agent 버전으로 컨테이너 인스턴스를 선택해요. 이 필터는 구버전의 Amazon ECS container agent를 실행하는 인스턴스를 찾는 데 사용할 수 있어요. 유효한 연산자: equals(==), not_equals(!=), greater_than(>), greater_than_equal(>=), less_than(<), less_than_equal(<=)

attribute:attribute-name — 속성으로 컨테이너 인스턴스를 선택해요. 자세한 내용은 Amazon ECS container instance attributes 참고.

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 — 태스크 그룹으로 컨테이너 인스턴스를 선택해요. 자세한 내용은 Group related Amazon ECS tasks 참고.

Operator (연산자)

비교 연산자. 다음 연산자가 지원돼요.

연산자 설명
==, equals 문자열 동등
!=, not_equals 문자열 부등
>, greater_than 초과
>=, greater_than_equal 이상
<, less_than 미만
<=, less_than_equal 이하
exists 주체가 존재
!exists, not_exists 주체가 존재하지 않음
in 인자 목록에 값이 있음
!in, not_in 인자 목록에 값이 없음
=~, matches 패턴 일치
!~, not_matches 패턴 불일치

참고 — 단일 표현식은 괄호를 포함할 수 없어요. 그러나 복합 표현식에서 우선순위를 지정하는 데 괄호를 사용할 수 있어요.

Argument (인자)

많은 연산자에서 인자는 리터럴 값이에요. in과 not_in 연산자는 인자 목록을 인자로 기대해요. 인자 목록을 다음과 같이 지정해요:

[argument1, argument2, ..., argumentN]

matches와 not_matches 연산자는 Java 정규식 문법을 따르는 인자를 기대해요. 자세한 내용은 java.util.regex.Pattern 참고.

복합 표현식 (Compound expressions)

다음 Boolean 연산자를 사용해 표현식을 결합할 수 있어요:

  • &&, and
  • ||, or
  • !, not

괄호를 사용해 우선순위를 지정할 수 있어요:

(expression1 or expression2) and expression3

예시 표현식 (Example expressions)

문자열 동등 예시 — 지정된 인스턴스 유형의 인스턴스를 선택:

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

태스크 친화성(Task Affinity) 예시 — service:production 그룹에서 태스크를 호스팅하는 인스턴스를 선택:

task:group == service:production

태스크 안티-친화성(Task Anti-Affinity) 예시 — database 그룹에서 태스크를 호스팅하지 않는 인스턴스를 선택:

not(task:group == database)

실행 태스크 수 예시 — 하나의 태스크만 실행하는 인스턴스를 선택:

runningTasksCount == 1

Amazon ECS container agent 버전 예시 — 1.14.5 미만의 container agent 버전을 실행하는 인스턴스를 선택:

agentVersion < 1.14.5

인스턴스 등록 시간 예시 — 2018년 2월 13일 이전에 등록된 인스턴스를 선택:

registeredAt < 2018-02-13

Amazon EC2 인스턴스 ID 예시 — 다음 Amazon EC2 인스턴스 ID를 가진 인스턴스를 선택:

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

더 알아보기 (Learn more)