서비스 정의 파라미터 - 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 플랫폼 버전을 지정하면 해당 작업에 사용 가능한 최신 플랫폼 버전을 얻을 수 있습니다. 서비스를 확장하면 해당 태스크는 서비스의 현재 배포에 지정된 플랫폼 버전을 받습니다. 자세한 설명은 Fargate Linux 플랫폼 버전 섹션을 참조하세요.

참고

플랫폼 버전은 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% 이고 의 경우 50% 입니다. AWS Management Console

배포 중 정상 작업의 최소 개수는 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

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

EXTERNAL

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

작업 배치

placementConstraints

타입: 객체 배열

필수: 아니요

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

type

타입: 문자열

필수 항목 여부: 아니요

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

expression

타입: 문자열

필수 항목 여부: 아니요

제약에 적용할 클러스터 쿼리 언어 표현식입니다. 제약 유형이 distinctInstance일 경우, 표현식을 지정할 수 없습니다. 자세한 정보는 Amazon ECS 작업을 위한 컨테이너 인스턴스를 정의하는 식을 생성합니다.을 참조하세요.

placementStrategy

유형: 객체 배열

필수: 아니요

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

type

타입: 문자열

유효한 값: random | spread | binpack

필수 항목 여부: 아니요

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

field

타입: 문자열

필수 항목 여부: 아니요

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

Tags

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 시작 유형의 네트워킹에 대한 자세한 내용은 을 참조하십시오. Amazon EC2 인스턴스의 작업을 위한 작업 네트워킹 Fargate 시작 유형의 네트워킹에 대한 자세한 내용은 Fargate 작업 네트워킹을 참조하십시오.

awsvpcConfiguration

유형: 객체

필수 항목 여부: 아니요

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

subnets

타입: 문자열 배열

필수 항목 여부: 예

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

securityGroups

유형: String 배열

필수 항목 여부: 아니요

작업 또는 서비스와 연결된 보안 그룹. 보안 그룹을 지정하지 않을 경우 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 CLI 또는 SDK를 사용하여 ECS 롤링 배포 컨트롤러의 로드 밸런서 구성만 수정할 수 있으며 블루/그린 또는 외장용은 수정할 수 없습니다. AWS CloudFormation AWS CodeDeploy 로드 밸런서 구성을 추가, 업데이트 또는 제거하면 Amazon ECS가 업데이트된 Elastic Load Balancing 구성을 사용하여 새 배포를 시작합니다. 이로 인해 작업이 로드 밸런서에 등록되거나 로드 밸런서에서 등록 취소됩니다. Elastic Load Balancing 구성을 업데이트하기 전에 테스트 환경에서 이를 확인하는 것이 좋습니다. 구성을 수정하는 방법에 대한 자세한 내용은 Amazon Elastic 컨테이너 서비스 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

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또는 컨테이너 이미지를 사용하는 것은 FireLens 로그 라우터 fluentd 컨테이너가 아닙니다.

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 문자를 사용할 수 있습니다.

볼륨 구성

volumeConfigurations

유형: 객체

필수 항목 여부: 아니요

서비스에서 관리하는 작업을 위한 볼륨을 생성하는 데 사용되는 구성입니다. 서비스의 각 작업에 대해 볼륨이 하나씩 생성됩니다. 작업 configuredAtLaunch 정의에 표시된 볼륨만 이 객체를 사용하여 구성할 수 있습니다. 이 객체는 Amazon EBS 데이터 볼륨을 서비스에서 관리하는 작업에 연결하는 데 필요합니다. 자세한 내용은 Amazon EBS volumes를 참조하세요.

name

타입: 문자열

필수 항목 여부: 예

서비스를 생성하거나 업데이트할 때 구성된 볼륨의 이름. 최대 255자 (대문자 및 소문자), 숫자, 밑줄 () 및 하이픈 (_) 을 사용할 수 있습니다. - 이 값은 작업 정의에 지정된 볼륨 이름과 일치해야 합니다.

managedEBSVolume

유형: 객체

필수 항목 여부: 아니요

서비스가 생성되거나 업데이트될 때 서비스에서 관리하는 작업에 연결되는 Amazon EBS 볼륨의 볼륨 구성입니다.

encrypted

타입: 부울

필수 항목 여부: 아니요

유효한 값: true|false

서비스에서 관리하는 작업에 연결된 Amazon EBS 볼륨을 암호화할지 여부를 지정합니다. 계정에 대해 Amazon EBS 암호화를 기본적으로 활성화한 경우 이 설정이 재정의되고 볼륨이 암호화됩니다. 기본 EBS 암호화에 대한 자세한 내용은 Amazon EC2 사용 설명서의 기본 암호화를 참조하십시오.

kmsKeyId

타입: 문자열

필수 항목 여부: 아니요

Amazon EBS 암호화에 사용할 AWS Key Management Service (AWS KMS) 키의 식별자입니다. 이 파라미터를 지정하지 않으면 Amazon AWS KMS key EBS용 파라미터가 사용됩니다. KmsKeyId가 지정되면 암호화된 상태가 true여야 합니다.

다음 중 하나를 사용하여 KMS 키를 지정할 수 있습니다.

  • 키 ID — 예1234abcd-12ab-34cd-56ef-1234567890ab:.

  • 키 별칭 — 예alias/ExampleAlias:.

  • 키 ARN — 예를 들어,. arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab

  • 별칭 ARN — 예:. arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias

중요

AWS KMS 키를 비동기적으로 인증합니다. 따라서 유효하지 않은 ID, 별칭 또는 ARN을 지정하면 작업이 성공한 것처럼 보일 수 있지만 결국에는 실패합니다. 자세한 내용은 Amazon EBS 볼륨 연결 문제 해결을 참조하십시오.

volumeType

타입: 문자열

필수 항목 여부: 아니요

유효한 값: gp2 | | gp3 | io1 | io2 | sc1 | st1 standard

EBS 볼륨 유형. 볼륨 유형에 대한 자세한 내용은 Amazon EC2 사용 설명서의 Amazon EBS 볼륨 유형을 참조하십시오. 기본 볼륨 유형은 gp3입니다.

참고

Fargate 작업에 연결하도록 구성된 Amazon EBS 볼륨에는 standard 볼륨 유형이 지원되지 않습니다.

sizeInGiB

유형: 정수

필수 항목 여부: 아니요

유효 범위: 1~16,384 사이의 정수

EBS 볼륨의 크기 (GiB) 입니다. 첨부할 볼륨을 구성하기 위해 스냅샷 ID를 제공하지 않는 경우 크기 값을 제공해야 합니다. 스냅샷을 사용하여 첨부할 볼륨을 구성하는 경우 기본값은 스냅샷 크기입니다. 그런 다음 스냅샷 크기보다 크거나 같은 크기를 지정할 수 있습니다.

gp2gp3 볼륨 유형의 유효 범위는 1-16,384입니다.

io1io2 볼륨 유형의 유효 범위는 4-16,384입니다.

st1sc1 볼륨 유형의 유효 범위는 125-16,384입니다.

standard볼륨 유형의 경우 유효 범위는 1-1,024입니다.

snapshotId

타입: 문자열

필수 항목 여부: 아니요

ECS 작업에 연결된 새 볼륨을 생성하는 데 사용되는 기존 EBS 볼륨의 스냅샷 ID입니다.

iops

유형: 정수

필수 항목 여부: 아니요

초당 I/O 작업 수(IOPS) 입니다. gp3, io1io2 볼륨의 경우 이 값은 해당 볼륨에 프로비저닝되는 IOPS의 개수를 나타냅니다. gp2볼륨의 경우 이 값은 볼륨의 기준 성능과 볼륨에 버스트를 위한 I/O 크레딧이 누적되는 비율을 나타냅니다. 이 파라미터는 io1io2 볼륨에 필요합니다. gp2, st1sc1, 또는 볼륨에는 이 매개변수가 지원되지 않습니다. standard

gp3볼륨의 경우 유효한 값 범위는 3,000에서 16,000까지입니다.

io1볼륨의 경우 유효한 값 범위는 100에서 64,000까지입니다.

io2볼륨의 경우 유효한 값 범위는 100~64,000입니다.

throughput

유형: 정수

필수 항목 여부: 아니요

서비스에서 관리하는 작업에 연결된 볼륨을 프로비저닝하는 데 필요한 처리량입니다.

중요

이 매개변수는 gp3 볼륨에만 지원됩니다.

roleArn

타입: 문자열

필수 항목 여부: 예

작업을 위한 Amazon EBS 리소스를 관리할 수 있는 권한을 Amazon ECS에 제공하는 인프라 AWS Identity and Access Management (IAM) 역할의 Amazon 리소스 ARN (ARN) 입니다. 자세한 설명은 아마존 ECS 인프라 IAM 역할 섹션을 참조하세요.

tagSpecifications

유형: 객체

필수 항목 여부: 아니요

서비스 관리형 Amazon EBS 볼륨에 적용할 태그의 사양.

resourceType

타입: 문자열

필수 항목 여부: 예

유효값: volume

생성 시 태그를 지정할 리소스 유형입니다.

tags

타입: 객체 배열

필수: 아니요

볼륨을 분류하고 구성하는 데 도움이 되도록 볼륨에 적용하는 메타데이터입니다. 각 태그는 키와 선택적 값으로 구성되며, 둘 다 사용자가 정의합니다. AmazonECSCreatedAmazonECSManaged 은 Amazon ECS에서 사용자를 대신하여 추가한 예약된 태그이므로 최대 48개의 태그를 지정할 수 있습니다. 볼륨이 삭제되면 태그도 삭제됩니다. 자세한 정보는 Amazon ECS 리소스 태깅을 참조하세요.

key

유형: 문자열

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

필수 항목 여부: 아니요

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

value

타입: 문자열

길이 제약 조건: 최소 길이는 0입니다. 최대 길이 256.

필수 항목 여부: 아니요

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

propagateTags

타입: 문자열

유효한 값: TASK_DEFINITION | SERVICE | NONE

필수 항목 여부: 아니요

작업 정의 또는 서비스의 태그를 볼륨에 복사할지 여부를 지정합니다. 를 지정하거나 값을 지정하지 않은 경우 NONE 태그는 복사되지 않습니다.

fileSystemType

타입: 문자열

필수 항목 여부: 아니요

유효한 값: xfs|ext3|ext4

볼륨의 파일 시스템 유형. 볼륨의 파일 시스템 유형에 따라 볼륨에서 데이터가 저장되고 검색되는 방식이 결정됩니다. 스냅샷에서 생성된 볼륨의 경우 스냅샷을 생성할 때 볼륨에서 사용하던 것과 동일한 파일 시스템 유형을 지정해야 합니다. 파일 시스템 유형이 일치하지 않으면 작업이 시작되지 않습니다. Linux 작업에 연결된 볼륨의 기본값은 입니다. XFS

서비스 정의 템플릿

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

Amazon EC2 시작 유형

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

Fargate 시작 유형

{ "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": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

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

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