Amazon ECS가 작업에 사용할 컨테이너 인스턴스 정의하기

Amazon ECS가 작업에 사용할 컨테이너 인스턴스 정의하기

작업 배치 제약 조건(task placement constraint)은 작업이 인스턴스에서 실행되는 것이 허용되는지 결정하는 데 Amazon ECS가 사용하는 컨테이너 인스턴스에 대한 규칙이에요. 하나 이상의 컨테이너 인스턴스가 제약 조건과 일치해야 해요.

출처: 문서

본문

작업 배치 제약 조건은 작업이 인스턴스에서 실행되는 것이 허용되는지 결정하는 데 Amazon ECS가 사용하는 컨테이너 인스턴스에 대한 규칙입니다. 하나 이상의 컨테이너 인스턴스가 제약 조건과 일치해야 합니다. 제약 조건과 일치하는 인스턴스가 없으면 작업은 PENDING 상태로 유지됩니다. 새 서비스를 만들거나 기존 서비스를 업데이트할 때 서비스 작업에 대한 작업 배치 제약 조건을 지정할 수 있습니다. placementConstraint 매개변수를 사용해 서비스 정의, 작업 정의 또는 작업에 작업 배치 제약 조건을 지정할 수 있습니다.

"placementConstraints": [
    {
        "expression": "The expression that defines the task placement constraints",
        "type": "The placement constraint type to use"
    }
]

다음 표는 매개변수 사용 방법을 설명합니다.

제약 조건 유형 지정할 수 있는 시기
distinctInstance 각 활성 작업을 다른 컨테이너 인스턴스에 배치합니다. Amazon ECS는 작업 배치를 위해 작업의 desired status(원하는 상태)를 확인합니다. 예를 들어 기존 작업의 desired status가 STOPPED이지만(마지막 상태는 아님) distinctInstance 배치 제약 조건에도 불구하고 새 작업이 같은 인스턴스에 배치될 수 있습니다. 따라서 같은 인스턴스에서 last status가 RUNNING인 작업 2개를 볼 수 있습니다. 중요: 작업에 강력한 격리가 필요한 고객은 Fargate를 사용할 것을 권장합니다. Fargate는 각 작업을 하드웨어 가상화 환경에서 실행합니다. 이를 통해 컨테이너화된 워크로드가 네트워크 인터페이스, Fargate 임시 스토리지, CPU, 메모리를 다른 작업과 공유하지 않도록 보장합니다. 작업 실행 RunTask, 새 서비스 생성 CreateService
memberOf 표현식을 충족하는 컨테이너 인스턴스에 작업을 배치합니다. 작업 실행 RunTask, 새 서비스 생성 CreateService, 새 작업 정의 생성 RegisterTaskDefinition, 작업 정의의 새 개정판 생성 RegisterTaskDefinition, 서비스 업데이트 UpdateService

memberOf 제약 조건 유형을 사용할 때 클러스터 쿼리 언어를 사용해 Amazon ECS가 작업을 배치할 수 있는 컨테이너 인스턴스를 정의하는 표현식을 만들 수 있습니다. 표현식은 속성별로 컨테이너 인스턴스를 그룹화하는 방법입니다. 표현식은 placementConstraint의 expression 매개변수에 들어갑니다.

Amazon ECS 컨테이너 인스턴스 속성

컨테이너 인스턴스에 사용자 지정 메타데이터(attributes 속성)를 추가할 수 있습니다. 각 속성에는 이름과 선택적 문자열 값이 있습니다. Amazon ECS가 제공하는 기본 제공 속성을 사용하거나 사용자 지정 속성을 정의할 수 있습니다.

다음 섹션에는 샘플 기본 제공, 선택적, 사용자 지정 속성이 포함되어 있습니다.

기본 제공 속성(Built-in attributes)

Amazon ECS는 다음 속성을 컨테이너 인스턴스에 자동으로 적용합니다.

  • ecs.ami-id – 인스턴스를 시작하는 데 사용된 AMI의 ID. 이 속성의 예시 값은 ami-1234abcd입니다.
  • ecs.availability-zone – 인스턴스의 가용 영역. 이 속성의 예시 값은 us-east-1a입니다.
  • ecs.instance-type – 인스턴스의 인스턴스 유형. 이 속성의 예시 값은 g2.2xlarge입니다.
  • ecs.os-type – 인스턴스의 운영 체제. 이 속성의 가능한 값은 linux와 windows입니다.
  • ecs.os-family – 인스턴스의 운영 체제 버전. Linux 인스턴스의 경우 유효한 값은 LINUX입니다. Windows 인스턴스의 경우 ECS는 WINDOWS_SERVER_<OS_Release>_<FULL or CORE> 형식으로 값을 설정합니다. 유효한 값은 WINDOWS_SERVER_2022_FULL, WINDOWS_SERVER_2022_CORE, WINDOWS_SERVER_20H2_CORE, WINDOWS_SERVER_2019_FULL, WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2016_FULL입니다.
    • 이는 Windows 컨테이너와 AWS Fargate의 Windows 컨테이너에 중요합니다. 모든 Windows 컨테이너의 OS 버전은 호스트와 일치해야 하기 때문입니다. 컨테이너 이미지의 Windows 버전이 호스트와 다르면 컨테이너가 시작되지 않습니다. 자세한 내용은 Microsoft 문서 사이트의 Windows container version compatibility를 참고하세요.
    • 클러스터가 여러 Windows 버전을 실행하는 경우 다음 배치 제약 조건을 사용해 작업이 같은 버전에서 실행되는 EC2 인스턴스에 배치되도록 할 수 있습니다: memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>). 자세한 내용은 Retrieving Amazon ECS-optimized Windows AMI metadata를 참고하세요.
  • ecs.cpu-architecture – 인스턴스의 CPU 아키텍처. 이 속성의 예시 값은 x86_64와 arm64입니다.
  • ecs.vpc-id – 인스턴스가 시작된 VPC. 이 속성의 예시 값은 vpc-1234abcd입니다.
  • ecs.subnet-id – 인스턴스가 사용하는 서브넷. 이 속성의 예시 값은 subnet-1234abcd입니다.

참고: Amazon ECS Managed Instances는 다음 속성 하위 집합을 지원합니다: ecs.subnet-id, ecs.availability-zone, ecs.instance-type, ecs.cpu-architecture.

선택적 속성(Optional attributes)

Amazon ECS는 다음 속성을 컨테이너 인스턴스에 추가할 수 있습니다.

  • ecs.awsvpc-trunk-id – 이 속성이 있으면 인스턴스에 트렁크 네트워크 인터페이스가 있는 것입니다. 자세한 내용은 Increasing Amazon ECS Linux container instance network interfaces를 참고하세요.
  • ecs.outpost-arn – 이 속성이 있으면 Outpost의 Amazon 리소스 이름(ARN)이 포함됩니다. 자세한 내용은 Amazon Elastic Container Service on AWS Outposts를 참고하세요.
  • ecs.capability.external – 이 속성이 있으면 인스턴스가 외부 인스턴스로 식별됩니다. 자세한 내용은 Amazon ECS clusters for external instances를 참고하세요.

사용자 지정 속성(Custom attributes)

컨테이너 인스턴스에 사용자 지정 속성을 적용할 수 있습니다. 예를 들어 이름이 "stack"이고 값이 "prod"인 속성을 정의할 수 있습니다.

사용자 지정 속성을 지정할 때 다음을 고려해야 합니다.

  • 이름은 1~128자 사이여야 하며 문자(대문자와 소문자), 숫자, 하이픈, 밑줄, 슬래시, 백슬래시, 마침표를 포함할 수 있습니다.
  • 값은 1~128자 사이여야 하며 문자(대문자와 소문자), 숫자, 하이픈, 밑줄, 마침표, 골뱅이(@), 슬래시, 백슬래시, 콜론, 공백을 포함할 수 있습니다. 값은 앞이나 뒤에 공백을 포함할 수 없습니다.

더 알아보기 (Learn more)