서비스 정의 파라미터 - Amazon Elastic Container Service

서비스 정의 파라미터

서비스 정의는 Amazon ECS 서비스 실행 방법을 정의합니다. 서비스 정의에서 다음 파라미터를 지정할 수 있습니다.

시작 유형

launchType

유형: 문자열

유효한 값: EC2 | FARGATE | EXTERNAL

필수 항목 여부: 아니요

서비스를 실행할 시작 유형. 시작 유형을 지정하지 않으면 기본적으로 capacityProviderStrategy가 사용됩니다. 자세한 정보는 Amazon ECS 시작 유형을 참조하세요.

launchType이 지정된 경우 capacityProviderStrategy 파라미터를 생략해야 합니다.

용량 공급자 전략

capacityProviderStrategy

유형: 객체 배열

필수 항목 여부: 아니요

서비스에 사용할 용량 공급자 전략입니다.

용량 공급자 전략은 할당할 baseweight와 함께 하나 이상의 용량 공급자로 구성됩니다. 용량 공급자는 용량 공급자 전략에 사용할 클러스터와 연결되어야 합니다. PutClusterCapacityProviders API는 용량 공급자를 클러스터와 연결하는 데 사용됩니다. ACTIVE 또는 UPDATING 상태의 용량 공급자만 사용할 수 있습니다.

capacityProviderStrategy가 지정된 경우 launchType 파라미터를 생략해야 합니다. capacityProviderStrategy 또는 launchType이 지정되지 않은 경우 클러스터에 대한 defaultCapacityProviderStrategy가 사용됩니다.

오토 스케일링을 사용하는 용량 공급자를 지정하려는 경우 용량 공급자가 이미 생성되어 있어야 합니다. CreateCapacityProvider API 태스크를 사용하여 새 용량 공급자를 생성할 수 있습니다.

AWS Fargate 용량 공급자를 사용하려면 FARGATE 또는 FARGATE_SPOT 용량 공급자를 지정합니다. AWS Fargate 용량 공급자는 모든 계정에 사용할 수 있으며 사용할 클러스터와 연결하기만 하면 됩니다.

PutClusterCapacityProviders API 태스크는 클러스터를 생성한 후 클러스터에 사용 가능한 용량 공급자 목록을 업데이트하는 데 사용됩니다.

capacityProvider

유형: 문자열

필수 항목 여부: 예

용량 공급자의 짧은 이름 또는 전체 Amazon 리소스 이름(ARN)입니다.

weight

유형: 정수

유효한 범위: 0에서 1,000 사이의 정수

필수 항목 여부: 아니요

가중치 값은 지정된 용량 공급자를 사용하는 시작된 총 태스크 수의 상대 백분율을 지정합니다.

예를 들어 두 개의 용량 공급자를 포함하는 전략이 있고 둘 다 1의 가중치를 갖는 경우를 가정합니다. 기본이 충족되면 태스크는 두 용량 공급자에 균등하게 분할됩니다. 동일한 로직을 사용하여 capacityProviderA의 가중치를 1, capacityProviderB의 가중치를 4로 지정한다고 가정합니다. 그런 다음 capacityProviderA를 사용하여 실행되는 각 태스크에 대해 4개의 태스크가 capacityProviderB를 사용합니다.

base

유형: 정수

유효한 범위: 0에서 100,000 사이의 정수

필수 항목 여부: 아니요

최소한 기준 값은 지정된 용량 공급자에서 실행할 태스크 수를 지정합니다. 용량 공급자 전략에서 하나의 용량 공급자만 기준을 정의할 수 있습니다.

태스크 정의

taskDefinition

유형: 문자열

필수 항목 여부: 아니요

서비스에서 실행할 태스크 정의의 familyrevision(family:revision) 또는 전체 Amazon 리소스 이름(ARN)입니다. revision이 지정되지 않으면 지정된 패밀리의 최신 ACTIVE 개정이 사용됩니다.

롤링 업데이트(ECS) 배포 컨트롤러를 사용할 때 태스크 정의를 지정해야 합니다.

플랫폼 운영 체제

platformFamily

유형: 문자열

필수 항목 여부: 조건부

기본값: Linux

이 파라미터는 Fargate에서 호스팅되는 Amazon ECS 서비스에 필요합니다.

이 파라미터는 Amazon EC2에서 호스팅되는 Amazon ECS 서비스에 대해 무시됩니다.

서비스를 실행하는 컨테이너의 운영 체제입니다. 유효한 값은 LINUX, WINDOWS_SERVER_2019_FULL, WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2022_CORE입니다.

서비스에 대해 지정하는 모든 태스크의 platformFamily 값은 서비스 platformFamily 값과 일치해야 합니다. 예를 들어 platformFamilyWINDOWS_SERVER_2019_FULL로 설정하는 경우 모든 태스크에 대한 platformFamily 값은 WINDOWS_SERVER_2019_FULL이어야 합니다.

플랫폼 버전

platformVersion

유형: 문자열

필수 항목 여부: 아니요

서비스의 작업이 실행 중인 플랫폼 버전입니다. 플랫폼 버전은 Fargate 시작 유형을 사용하는 작업에만 지정됩니다. 지정하지 않으면 기본적으로 최신 버전(LATEST)이 사용됩니다.

AWS Fargate 플랫폼 버전은 Fargate 태스크 인프라를 위한 특정 실행 시간 환경을 참조하는 데 사용합니다. 태스크를 실행하거나 서비스를 생성할 때 LATEST 플랫폼 버전을 지정하면 해당 작업에 사용 가능한 최신 플랫폼 버전을 얻을 수 있습니다. 서비스를 확장하면 해당 태스크는 서비스의 현재 배포에 지정된 플랫폼 버전을 받습니다. 자세한 정보는 AWS Fargate 플랫폼 버전 섹션을 참조하세요.

참고

플랫폼 버전은 EC2 시작 유형을 사용하는 작업에는 지정되지 않습니다.

클러스터

cluster

유형: 문자열

필수 항목 여부: 아니요

서비스를 실행할 클러스터의 짧은 이름 또는 전체 Amazon 리소스 이름(ARN)입니다. 클러스터를 지정하지 않으면 default 클러스터가 가정됩니다.

서비스 이름

serviceName

유형: 문자열

필수 항목 여부: 예

서비스의 이름입니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다. 서비스 이름은 클러스터 내에서 고유해야 하지만, 한 리전 또는 여러 리전에 걸쳐 존재하는 여러 클러스터에서 비슷한 서비스 이름을 사용할 수 있습니다.

일정 전략

schedulingStrategy

유형: 문자열

유효한 값: REPLICA | DAEMON

필수 항목 여부: 아니요

사용할 일정 전략입니다. 일정 전략이 지정되지 않은 경우 REPLICA 전략이 사용됩니다. 자세한 정보는 서비스 스케줄러 개념 섹션을 참조하세요.

사용 가능한 서비스 스케줄러 전략으로 다음 두 가지가 있습니다.

  • REPLICA—복제본 일정 전략은 클러스터에 원하는 태스크 수를 배치하고 유지합니다. 기본적으로 서비스 스케줄러는 가용 영역에 태스크를 분산합니다. 작업 배치 전략과 제약을 사용하여 작업 배치 결정을 사용자 지정할 수 있습니다. 자세한 정보는 복제본 섹션을 참조하세요.

  • DAEMON - 대몬 일정 전략은 사용자가 클러스터에 지정하는 작업 배치 제약을 모두 충족하는 각 활성 컨테이너 인스턴스에 한 태스크씩 정확히 배포합니다. 이 전략을 사용하는 경우 원하는 태스크 수, 작업 배치 전략을 지정하거나 서비스 Auto Scaling 정책을 사용할 필요가 없습니다. 자세한 정보는 대몬

    참고

    Fargate 태스크는 DAEMON 일정 전략을 지원하지 않습니다.

원하는 개수

desiredCount

유형: 정수

필수 항목 여부: 아니요

서비스에서 배치되고 계속 실행될 지정된 작업 정의의 인스턴스화 수입니다.

REPLICA 일정 전략이 사용되는 경우 이 파라미터가 필요합니다. 서비스에서 DAEMON 일정 전략을 사용하는 경우 이 파라미터는 선택 사항입니다.

배포 구성

deploymentConfiguration

유형: 객체

필수 항목 여부: 아니요

배포 시 실행할 작업 수 및 작업 중지/시작 순서를 제어하는 선택적 배포 파라미터입니다.

maximumPercent

유형: 정수

필수 항목 여부: 아니요

서비스가 롤링 업데이트(ECS) 배포 유형을 사용하는 경우, maximumPercent 파라미터는 배포 중에 RUNNING, STOPPING 또는 PENDING 상태에서 허용되는 서비스의 작업 수에 대한 상한을 나타냅니다. 이는 가장 가까운 정수로 반내림된 desiredCount의 백분율로 표현됩니다. 이 파라미터를 사용하여 배포 배치 크기를 정의할 수 있습니다. 예를 들어 서비스에서 REPLICA 서비스 스케줄러를 사용 중이고 desiredCount가 태스크 4개이고 maximumPercent 값이 200%인 경우, 스케줄러가 기존 태스크 4개를 중지하기 전에 새 태스크 4개를 시작할 수 있습니다. 단, 이렇게 하는 데 필요한 클러스터 리소스를 사용할 수 있는 경우를 전제로 합니다. REPLICA 서비스 스케줄러를 사용하는 서비스의 기본 maximumPercent 값은 200%입니다.

서비스가 DAEMON 서비스 스케줄러 유형을 사용하는 경우 maximumPercent는 100%를 유지해야 합니다. 이것이 기본값입니다.

배포 시 최대 작업 수는 desiredCountmaximumPercent/100을 곱하여 가장 가까운 정수로 내림한 값입니다.

서비스가 블루/그린(CODE_DEPLOY) 또는 EXTERNAL 배포 유형과, EC2 시작 유형을 사용하는 태스크를 사용하는 경우 최대 백분율 값은 기본값으로 설정되고, 컨테이너 인스턴스가 DRAINING 상태인 동안 RUNNING 상태로 유지되는 서비스의 작업 수에 대한 상한을 정의하는 데 사용됩니다. 서비스의 태스크가 Fargate 시작 유형을 사용할 경우, 최대 백분율 값은 서비스를 설명할 때 반환되지만 사용되지는 않습니다.

minimumHealthyPercent

유형: 정수

필수 항목 여부: 아니요

서비스가 롤링 업데이트(ECS) 배포 유형을 사용하는 경우, minimumHealthyPercent는 배포 중에 RUNNING 상태로 유지되어야 하는 서비스의 태스크 수에 대한 하한을 나타냅니다. 이는 가장 가까운 정수로 반올림된 desiredCount의 백분율로 표현됩니다. 이 파라미터를 사용하여 추가 클러스터 용량을 사용하지 않고 배포할 수 있습니다. 예를 들어 서비스에서 desiredCount가 태스크 4개이고 minimumHealthyPercent가 50%인 경우, 서비스 스케줄러가 새 태스크 2개를 시작하기 전에 기존 태스크 2개를 중지하여 클러스터 용량을 확보할 수 있습니다.

로드 밸런서를 사용하지 않는 서비스의 경우 다음 사항에 유의해야 합니다.

  • 서비스의 작업 내 모든 필수 컨테이너가 상태 확인을 통과하면 서비스가 정상 상태로 간주됩니다.

  • 정의된 상태 확인이 있는 필수 컨테이너가 태스크에 없는 경우, 서비스 스케줄러는 태스크가 최소 정상 백분율 합계로 계산되기 전에 태스크가 RUNNING 상태에 도달한 후 40초 동안 대기합니다.

  • 정의된 상태 확인이 있는 하나 이상의 필수 컨테이너가 태스크에 있는 경우, 서비스 스케줄러는 태스크가 최소 정상 백분율 합계로 계산되기 전에 태스크가 정상 상태에 도달할 때까지 대기합니다. 작업 내 모든 필수 컨테이너가 상태 확인을 통과하면 서비스가 정상 상태로 간주됩니다. 서비스 스케줄러가 대기할 수 있는 시간은 컨테이너 상태 확인 설정에 따라 결정됩니다. 자세한 정보는 상태 확인을 참조하세요.

로드 밸런서를 사용하는 서비스의 경우 다음 사항에 유의해야 합니다.

  • 태스크에 상태 확인이 정의된 필수 컨테이너가 없는 경우, 서비스 스케줄러는 로드 밸런서 대상 그룹 상태 확인이 정상 상태를 반환할 때까지 기다렸다가 작업을 최소 정상 백분율 합계로 계산합니다.

  • 태스크에 상태 확인이 정의된 필수 컨테이너가 있는 경우, 서비스 스케줄러는 작업이 정상 상태에 도달하고 로드 밸런서 대상 그룹 상태 확인이 모두 정상 상태를 반환할 때까지 기다렸다가 작업을 최소 정상 백분율 합계로 계산합니다.

minimumHealthyPercent에 대한 복제본 서비스의 기본값은 100%입니다. DAEMON 서비스 일정을 사용하는 서비스의 기본 minimumHealthyPercent 값은 AWS CLI, AWS SDK 및 API의 경우 0%이고, AWS Management Console의 경우 50%입니다.

배포 중 정상 작업의 최소 개수는 desiredCountminimumHealthyPercent/100을 곱하여 가장 가까운 정수로 반올림한 값입니다.

서비스가 블루/그린(CODE_DEPLOY) 또는 EXTERNAL 배포 유형을 사용하고 EC2 시작 유형을 사용하는 태스크를 실행하는 경우 최소 정상 상태 백분율 값은 기본값으로 설정되고, 컨테이너 인스턴스가 DRAINING 상태인 동안 RUNNING 상태로 유지되는 서비스의 작업 수에 대한 하한을 정의하는 데 사용됩니다. 서비스가 블루/그린(CODE_DEPLOY) 또는 EXTERNAL 배포 유형을 사용하고 Fargate 시작 유형을 사용하는 태스크를 실행하는 경우, 최소 정상 상태 백분율 값은 서비스를 설명할 때 반환되지만 사용되지는 않습니다.

배포 컨트롤러

deploymentController

유형: 객체

필수 항목 여부: 아니요

서비스에 사용할 배포 컨트롤러입니다. 배포 컨트롤러가 지정되지 않은 경우 ECS 컨트롤러가 사용됩니다. 자세한 정보는 Amazon ECS 배포 유형 섹션을 참조하세요.

type

유형: 문자열

유효한 값: ECS | CODE_DEPLOY | EXTERNAL

필수 항목 여부: 예

사용할 배포 컨트롤러 유형입니다. 사용 가능한 배포 컨트롤러 유형은 세 가지입니다.

ECS

롤링 업데이트(ECS) 배포 유형은 현재 실행 중인 컨테이너 버전을 최신 버전으로 바꿉니다. 롤링 업데이트 중에 Amazon ECS가 서비스에서 추가하거나 제거하는 컨테이너의 수는 deploymentConfiguration에 지정된 대로 서비스 배포 중에 허용되는 정상 작업의 최소 및 최대 수를 조정하여 제어합니다.

CODE_DEPLOY

블루/그린(CODE_DEPLOY) 배포 유형은 CodeDeploy를 기반으로 하는 블루/그린 배포 모델을 사용하므로 프로덕션 트래픽을 전송하기 전에 서비스의 새로운 배포를 확인할 수 있습니다.

EXTERNAL

외부 배포 유형을 사용하면 타사 배포 컨트롤러를 사용하여 Amazon ECS 서비스의 배포 프로세스를 완벽하게 제어할 수 있습니다.

작업 배치

placementConstraints

유형: 객체 배열

필수 항목 여부: 아니요

서비스 내 작업에 사용할 배치 제약 객체의 배열입니다. 태스크당 최대 10개의 제약 조건을 지정할 수 있습니다. 이 제한에는 태스크 정의 내의 제약 조건과 런타임 시 지정되는 제약 조건이 포함됩니다. Fargate 시작 유형을 사용하는 경우 작업 배치 제약은 지원되지 않습니다.

type

유형: 문자열

필수 항목 여부: 아니요

제약의 유형입니다. distinctInstance를 사용하여 특정 그룹의 각 작업이 다른 컨테이너 인스턴스에서 실행 중인지 확인합니다. memberOf를 사용하여 선택을 유효한 후보 그룹으로 제한합니다. 값 distinctInstance는 태스크 정의에서 지원되지 않습니다.

expression

유형: 문자열

필수 항목 여부: 아니요

제약에 적용할 클러스터 쿼리 언어 표현식입니다. 제약 유형이 distinctInstance일 경우, 표현식을 지정할 수 없습니다. 자세한 정보는 클러스터 쿼리 언어을 참조하세요.

placementStrategy

유형: 객체 배열

필수 항목 여부: 아니요

서비스 내 작업에 사용할 배치 전략 객체입니다. 서비스당 최대 4개까지 전략 규칙을 지정할 수 있습니다.

type

유형: 문자열

유효한 값: random | spread | binpack

필수 항목 여부: 아니요

배치 전략의 유형입니다. random 배치 전략은 사용 가능한 후보에 태스크를 임의로 배치합니다. spread 배치 전략은 field 파라미터를 기반으로 사용 가능한 후보 간에 배치를 고르게 분산시킵니다. binpack 전략은 field 파라미터로 지정된 사용 가능한 최소량의 리소스가 있는 사용 가능한 후보에 태스크를 배치합니다. 예를 들어 메모리에 빈팩 전략을 적용하면 남은 메모리 양이 가장 적지만 여전히 태스크를 실행하기에 충분한 인스턴스에 태스크가 배치됩니다.

field

유형: 문자열

필수 항목 여부: 아니요

배치 전략을 적용할 필드입니다. spread 배치 전략의 경우 유효한 값은 instanceId(또는 host, 효과는 동일함)이거나, 모든 플랫폼 또는 컨테이너 인스턴스에 적용되는 사용자 지정 속성(예: attribute:ecs.availability-zone)입니다. binpack 배치 전략의 경우 유효한 값은 cpumemory입니다. random 배치 전략의 경우 이 필드가 사용되지 않습니다.

태그

tags

유형: 객체 배열

필수 항목 여부: 아니요

서비스를 분류하고 구성하는 데 도움이 되도록 서비스에 적용하는 메타데이터입니다. 각 태그는 사용자가 정의하는 키와 선택적 값으로 구성됩니다. 서비스가 삭제되면 태그도 함께 삭제됩니다. 서비스에 최대 50개의 태그를 적용할 수 있습니다. 자세한 정보는 Amazon ECS 리소스 태깅 섹션을 참조하세요.

key

유형: 문자열

길이 제약: 최소 길이는 1입니다. 최대 길이는 128입니다.

필수 항목 여부: 아니요

하나의 태그를 구성하는 키-값 쌍의 일부분입니다. 키는 더 구체적인 태그 값에 대해 카테고리와 같은 역할을 하는 일반적인 레이블입니다.

value

유형: 문자열

길이 제약: 최소 길이 0. 최대 길이 256.

필수 항목 여부: 아니요

하나의 태그를 구성하는 키-값 쌍의 선택적 부분입니다. 하나의 값은 태그 카테고리(키) 내에서 서술자 역할을 수행합니다.

enableECSManagedTags

유형: 부울

유효한 값: true | false

필수 항목 여부: 아니요

서비스의 태스크에 대해 Amazon ECS 관리형 태그를 사용할지를 지정합니다. 값을 지정하지 않을 경우 기본값은 false입니다. 자세한 정보는 리소스에 결제용 태그 지정 섹션을 참조하세요.

propagateTags

유형: 문자열

유효한 값: TASK_DEFINITION | SERVICE

필수 항목 여부: 아니요

태그를 태스크 정의 또는 서비스에서 서비스의 작업으로 복사할지를 지정합니다. 값을 지정하지 않을 경우 태그는 복사되지 않습니다. 태그는 서비스 생성 중에 서비스 내의 작업에만 복사할 수 있습니다. 서비스 생성 후 작업 생성에 태그를 추가하려면 TagResource API 태스크를 사용합니다.

네트워크 구성

networkConfiguration

유형: 객체

필수 항목 여부: 아니요

서비스에 대한 네트워크 구성. 이 파라미터는 awsvpc 네트워크 모드를 사용하는 태스크 정의가 고유한 탄력적 네트워크 인터페이스를 받는 데 필요하며 다른 네트워크 모드에 대해서는 지원되지 않습니다. Fargate 시작 유형을 사용하는 경우 awsvpc 네트워크 모드가 필수입니다. 자세한 정보는 Amazon EC2 인스턴스에서 호스팅되는 작업을 위한 작업 네트워킹 섹션을 참조하세요.

awsvpcConfiguration

유형: 객체

필수 항목 여부: 아니요

작업 또는 서비스를 위한 서브넷 및 보안 그룹을 나타내는 객체.

subnets

유형: 문자열 배열

필수 항목 여부: 예

태스크 또는 서비스와 연결된 서브넷입니다. awsvpcConfiguration에 따라 지정할 수 있는 서브넷의 한도는 16개입니다.

securityGroups

유형: 문자열 배열

필수 항목 여부: 아니요

작업 또는 서비스와 연결된 보안 그룹. 보안 그룹을 지정하지 않을 경우 VPC에 대해 기본 설정된 보안 그룹이 사용됩니다. awsvpcConfiguration에 따라 지정할 수 있는 보안 그룹의 한도는 5개입니다.

assignPublicIP

유형: 문자열

유효한 값: ENABLED | DISABLED

필수 항목 여부: 아니요

작업의 탄력적 네트워크 인터페이스가 퍼블릭 IP 주소를 수신하는지 여부입니다. 값을 지정하지 않으면 DISABLED의 기본값이 사용됩니다.

healthCheckGracePeriodSeconds

유형: 정수

필수 항목 여부: 아니요

RUNNING 상태에 들어간 후, Amazon ECS 서비스 스케줄러가 작업이 비정상적인 Elastic Load Balancing 대상 상태 확인, 컨테이너 상태 확인 및 Route 53 상태 확인을 무시해야 하는 시간(초)입니다. 이는 서비스가 로드 밸런서를 사용하도록 구성된 경우에만 유효합니다. 서비스에 로드 밸런서가 정의되어 있고 상태 확인 유예 기간 값이 지정되지 않으면 기본값인 0이 사용됩니다.

서비스 태스크를 시작하고 상태 확인에 응답하는 데 시간이 다소 걸린다면 최대 2,147,483,647초의 상태 확인 유예 기간을 지정할 수 있습니다. 이 기간에는 ECS 서비스 스케줄러가 상태 확인의 상태를 무시합니다. 이 유예 기간 전에는 ECS 서비스 스케줄러가 태스크를 비정상으로 표시하고 태스크를 중단할 수 없습니다.

Elastic Load Balancing을 사용하지 않는 경우 태스크 정의 상태 확인 파라미터에서 startPeriod를 사용하는 것이 좋습니다. 자세한 정보는 상태 확인을 참조하세요.

loadBalancers

유형: 객체 배열

필수 항목 여부: 아니요

서비스와 함께 사용할 로드 밸런서를 나타내는 로드 밸런서 객체입니다. Application Load Balancer 또는 Network Load Balancer를 사용하는 서비스의 경우, 서비스에 연결할 수 있는 대상 그룹은 5개로 제한됩니다.

서비스를 생성한 후에는 로드 밸런서 구성을 AWS Management Console에서 변경할 수 없습니다. AWS Copilot, AWS CloudFormation, AWS CLI 또는 SDK를 사용하여 로드 밸런서 구성을 AWS CodeDeploy 블루/그린 또는 외부가 아닌 ECS 롤링 배포 컨트롤러에 대해서만 변경할 수 있습니다. 로드 밸런서 구성을 추가, 업데이트 또는 제거하면 Amazon ECS가 업데이트된 Elastic Load Balancing 구성을 사용하여 새 배포를 시작합니다. 이로 인해 작업이 로드 밸런서에 등록되거나 로드 밸런서에서 등록 취소됩니다. Elastic Load Balancing 구성을 업데이트하기 전에 테스트 환경에서 이를 확인하는 것이 좋습니다. 구성을 변경하는 방법에 대한 자세한 정보는 Amazon Elastic Container Service API Reference(Amazon Elastic Container Service API 레퍼런스)의 UpdateService를 참조하세요.

Application Load Balancer와 Network Load Balancer의 경우 이 객체는 로드 밸런서 대상 그룹 ARN, 컨테이너 이름(컨테이너 정의 내 이름과 동일), 로드 밸런서로부터 액세스할 컨테이너 포트를 포함해야 합니다. 이 서비스의 태스크가 컨테이너 인스턴스에 배치되면 컨테이너 인스턴스 및 포트 조합이 지정된 대상 그룹의 대상으로 등록됩니다.

targetGroupArn

유형: 문자열

필수 항목 여부: 아니요

서비스와 연결된 Elastic Load Balancing 대상 그룹의 전체 Amazon 리소스 이름(ARN)입니다.

대상 그룹 ARN은 Application Load Balancer 또는 Network Load Balancer를 사용할 때만 지정됩니다.

loadBalancerName

유형: 문자열

필수 항목 여부: 아니요

서비스와 연결할 로드 밸런서의 이름입니다.

Application Load Balancer 또는 Network Load Balancer를 사용하는 경우 로드 밸런서 이름 파라미터를 생략합니다.

containerName

유형: 문자열

필수 항목 여부: 아니요

로드 밸런서와 연결할 컨테이너의 이름(컨테이너 정의 내 이름과 동일)입니다.

containerPort

유형: 정수

필수 항목 여부: 아니요

로드 밸런서와 연결할 컨테이너의 포트입니다. 이 포트는 서비스 내 작업이 사용하는 태스크 정의의 containerPort와 일치해야 합니다. EC2 시작 유형을 사용하는 태스크의 경우, 컨테이너 인스턴스가 포트 매핑의 hostPort에서 인바운드 트래픽을 허용해야 합니다.

role

유형: 문자열

필수 항목 여부: 아니요

Amazon ECS가 사용자 대신 로드 밸런서를 호출하도록 허용하는 IAM 역할의 짧은 이름 또는 전체 ARN입니다. 이 파라미터는 서비스에 대한 단일 대상 그룹과 함께 로드 밸런서를 사용하며 태스크 정의에서 awsvpc 네트워크 모드를 사용하지 않는 경우에만 허용됩니다. role 파라미터를 지정하는 경우 loadBalancers 파라미터를 사용하여 로드 밸런서 객체도 지정해야 합니다.

지정된 역할이 / 이외의 다른 경로를 갖는 경우 전체 역할 ARN을 지정(권장 방법)하거나 경로에 역할 이름을 접두사로 추가해야 합니다. 예를 들어 이름이 bar이고 경로가 /foo/인 역할에 대해 /foo/bar를 역할 이름으로 지정합니다. 자세한 정보는 IAM 사용 설명서표시 이름 및 경로를 참조하세요.

중요

해당 계정에서 Amazon ECS 서비스 연결 역할을 이미 생성한 경우, 여기에 역할을 지정하지 않는 한 해당 역할이 기본적으로 서비스에 사용됩니다. 태스크 정의에서 awsvpc 네트워크 모드를 사용할 경우 서비스 연결 역할이 필요합니다. 이 경우 여기에 역할을 지정하면 안 됩니다. 자세한 내용은 Amazon ECS에 대해 서비스 연결 역할 사용 섹션을 참조하세요.

serviceConnectConfiguration

유형: 객체

필수 항목 여부: 아니요

서비스를 검색 및 연결하고, 네임스페이스 내의 다른 서비스에서 검색하거나 연결하기 위한 이 서비스의 구성입니다.

자세한 내용은 Service Connect 섹션을 참조하세요.

enabled

유형: 부울

필수 항목 여부: 예

이 서비스에서 Service Connect를 사용할지 여부를 지정합니다.

namespace

유형: 문자열

필수 항목 여부: 아니요

Service Connect와 함께 사용할 AWS Cloud Map 네임스페이스의 약식 이름 또는 전체 Amazon 리소스 이름(ARN)입니다. 네임스페이스는 Amazon ECS 서비스 및 클러스터와 같은 AWS 리전에 있어야 합니다. 네임스페이스 유형은 서비스 연결에 영향을 미치지 않습니다. AWS Cloud Map에 대한 자세한 내용은 AWS Cloud Map 개발자 안내서Working with Services(서비스 작업)를 참조하세요.

services

유형: 객체 배열

필수 항목 여부: 아니요

Service Connect 서비스 객체의 배열입니다. 이는 다른 Amazon ECS 서비스에서 이 서비스에 연결하는 데 사용하는 이름과 별칭(엔드포인트라고도 함)입니다.

네임스페이스의 구성원인 '클라이언트' Amazon ECS 서비스가 네임스페이스 내의 다른 서비스에만 연결하려는 경우에는 이 필드가 필요하지 않습니다. 서비스에 연결된 로드 밸런서나 다른 수단을 통해 들어오는 요청을 수락하는 프런트엔드 애플리케이션을 예로 들 수 있습니다.

객체는 작업 정의에서 포트를 선택하고, AWS Cloud Map 서비스 이름을 할당하고, 클라이언트 애플리케이션이 이 서비스를 참조할 수 있는 별칭 배열(엔드포인트라고도 함) 및 포트를 할당합니다.

portName

유형: 문자열

필수 항목 여부: 예

portName은 이 Amazon ECS 서비스의 작업 정의에 있는 모든 컨테이너에 있는 portMappings 중 하나의 name과 일치해야 합니다.

discoveryName

유형: 문자열

필수 항목 여부: 아니요

discoveryName은 이 Amazon ECS 서비스에 대해 Amazon ECS에서 생성하는 새 AWS Cloud Map 서비스의 이름입니다. AWS Cloud Map 네임스페이스 내에서 고유해야 합니다.

이 필드가 지정되지 않은 경우 portName이 사용됩니다.

clientAliases

유형: 객체 배열

필수 항목 여부: 아니요

이 서비스 연결 서비스의 클라이언트 별칭 목록입니다. 이를 사용하여 클라이언트 애플리케이션에서 사용할 수 있는 이름을 할당합니다. 이 목록에 포함할 수 있는 최대 클라이언트 별칭 수는 1개입니다.

각 별칭('엔드포인트')은 다른 Amazon ECS 서비스('클라이언트')가 이 서비스에 연결하는 데 사용할 수 있는 DNS 이름 및 포트 번호입니다.

각 이름과 포트 조합은 네임스페이스 내에서 고유해야 합니다.

이러한 이름은 클라이언트 서비스의 각 작업 내에서 구성되며, AWS Cloud Map에서는 구성되지 않습니다. 이러한 이름을 확인하기 위한 DNS 요청은 작업을 종료하지 않으며, 탄력적 네트워크 인터페이스별 초당 DNS 요청 할당량에 포함되지 않습니다.

port

유형: 정수

필수 항목 여부: 예

서비스 연결 프록시의 수신 대기 포트 번호입니다. 이 포트는 동일한 네임스페이스 내의 모든 작업 안에서 사용할 수 있습니다.

클라이언트 Amazon ECS 서비스에서 애플리케이션을 변경하지 않으려면 클라이언트 애플리케이션이 기본적으로 사용하는 포트와 동일한 포트로 설정합니다.

dnsName

유형: 문자열

필수 항목 여부: 아니요

dnsName은 클라이언트 작업의 애플리케이션에서 이 서비스에 연결하는 데 사용하는 이름입니다. 이름은 유효한 DNS 레이블이어야 합니다.

이 필드가 지정되지 않으면 기본값은 discoveryName.namespace입니다. discoveryName이 지정되지 않으면 작업 정의에서 portName이 사용됩니다.

클라이언트 Amazon ECS 서비스에서 애플리케이션을 변경하지 않으려면 클라이언트 애플리케이션이 기본적으로 사용하는 포트와 동일한 이름으로 설정합니다. 예를 들어 몇 가지 일반적인 이름은 database, db 또는 데이터베이스의 소문자 이름(mysql 또는 redis)입니다.

ingressPortOverride

유형: 정수

필수 항목 여부: 아니요

(선택 사항) Service Connect 프록시가 수신 대기할 포트 번호입니다.

이 필드의 값을 사용하면 이 애플리케이션의 작업 정의에서 명명된 portMapping에 지정된 포트 번호의 트래픽에 대한 프록시를 우회하고, Amazon VPC 보안 그룹에서 이를 사용하여 이 Amazon ECS 서비스의 프록시로 들어오는 트래픽을 허용할 수 있습니다.

awsvpc 모드에서 기본값은 이 애플리케이션의 작업 정의에서 portMapping에 지정된 컨테이너 포트 번호입니다. bridge 브리지 모드에서 기본값은 Service Connect 프록시의 동적 임시 포트입니다.

logConfiguration

유형: LogConfiguration 객체

필수 항목 여부: 아니요

Service Connect 프록시 로그가 게시되는 위치를 정의합니다. 예상치 못한 이벤트 발생 시 로그를 디버깅하는 데 사용합니다. 이 구성은 이 Amazon ECS 서비스의 각 작업에 있는 Service Connect 프록시 컨테이너의 logConfiguration 파라미터를 설정합니다. 프록시 컨테이너는 작업 정의에 지정되지 않습니다.

이 Amazon ECS 서비스에 대한 작업 정의의 애플리케이션 컨테이너와 동일한 로그 구성을 사용하는 것이 좋습니다. FireLens의 경우 이는 애플리케이션 컨테이너의 로그 구성입니다. fluent-bit 또는 fluentd 컨테이너 이미지를 사용하는 FireLens 로그 라우터 컨테이너가 아닙니다.

serviceRegistries

유형: 객체 배열

필수 항목 여부: 아니요

서비스의 서비스 검색 구성에 대한 세부 정보입니다. 자세한 정보는 서비스 검색 섹션을 참조하세요.

registryArn

유형: 문자열

필수 항목 여부: 아니요

서비스 레지스트리의 Amazon 리소스 이름(ARN)입니다. 현재 지원되는 서비스 레지스트리는 AWS Cloud Map입니다. 자세한 정보는 AWS Cloud Map 개발자 안내서에서 서비스 태스크를 참조하세요.

port

유형: 정수

필수 항목 여부: 아니요

서비스 검색 서비스에서 SRV 레코드를 지정한 경우 사용되는 포트 값입니다. awsvpc 네트워크 모드와 SRV 레코드를 모두 사용하는 경우 이 필드는 필수입니다.

containerName

유형: 문자열

필수 항목 여부: 아니요

서비스 검색 서비스에 사용할 컨테이너 이름 값입니다. 이 값은 태스크 정의에 지정되어 있습니다. 서비스 작업이 지정하는 태스크 정의가 bridge 또는 host 네트워크 모드를 사용하는 경우, 태스크 정의에서 containerNamecontainerPort 조합을 지정해야 합니다. 서비스 작업이 지정하는 태스크 정의가 awsvpc 네트워크 모드를 사용하고 유형 SRV DNS 레코드가 사용되는 경우, containerNamecontainerPort 조합 또는 port 값 중 하나를 지정해야 합니다.

containerPort

유형: 정수

필수 항목 여부: 아니요

서비스 검색 서비스에 사용할 포트 값입니다. 이 값은 태스크 정의에 지정되어 있습니다. 서비스 작업이 지정하는 태스크 정의가 bridge 또는 host 네트워크 모드를 사용하는 경우, 태스크 정의에서 containerNamecontainerPort 조합을 지정해야 합니다. 서비스 작업이 지정하는 태스크 정의가 awsvpc 네트워크 모드를 사용하고 유형 SRV DNS 레코드가 사용되는 경우, containerNamecontainerPort 조합 또는 port 값 중 하나를 지정해야 합니다.

클라이언트 토큰

clientToken

유형: 문자열

필수 항목 여부: 아니요

요청 멱등성을 보장하기 위해 제공하는 고유한 대소문자 구분 식별자입니다. 최대 32자의 ASCII 문자를 사용할 수 있습니다.

서비스 정의 템플릿

다음은 Amazon ECS 서비스 정의의 JSON 표현을 보여줍니다.

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "FARGATE", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "platformFamily": "", "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "spread", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "ENABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "SERVICE" }

다음 AWS CLI 명령을 사용하여 이 서비스 정의 템플릿을 생성할 수 있습니다.

aws ecs create-service --generate-cli-skeleton