Amazon EC2용 Amazon ECS 태스크 정의 파라미터

Amazon EC2용 Amazon ECS 태스크 정의 파라미터

태스크 정의는 태스크 패밀리, AWS IAM 태스크 역할, 네트워크 모드, 컨테이너 정의, 볼륨, 태스크 배치 제약 조건, 용량의 여러 부분으로 나뉩니다. 태스크 정의에는 태스크 패밀리와 컨테이너 정의가 필수입니다. 반면 태스크 역할, 네트워크 모드, 볼륨, 태스크 배치 제약 조건, 런치 타입은 선택 사항입니다. 이 파라미터들을 JSON 파일에서 사용해 태스크 정의를 구성할 수 있어요.

출처: 문서

본문

다음은 Amazon EC2용 각 태스크 정의 파라미터에 대한 자세한 설명입니다.

태스크 패밀리(Family)

family

  • 유형: String / 필수: 예
  • 태스크 정의를 등록할 때 리비전 번호로 지정된 태스크 정의의 여러 버전에 대한 이름과 비슷한 family를 부여합니다. 특정 family에 처음 등록되는 태스크 정의에는 리비전 1이 부여되고, 이후 등록되는 태스크 정의는 순차적 리비전 번호를 받아요.

용량(Capacity)

태스크 정의를 등록할 때 Amazon ECS가 태스크 정의를 검증해야 할 용량을 지정할 수 있어요. 태스크 정의가 지정된 호환성에 대해 검증되지 않으면 클라이언트 예외가 반환됩니다. 태스크 정의에서 다음 파라미터가 허용됩니다.

requiresCompatibilities

  • 유형: String 배열 / 필수: 아니요 / 유효 값: EC2
  • 태스크 정의를 검증할 용량. 이는 태스크 정의에 사용된 모든 파라미터가 Amazon EC2의 요구 사항을 충족하는지 확인하는 검사를 시작합니다.

태스크 역할(Task role)

taskRoleArn

  • 유형: String / 필수: 아니요
  • 태스크 정의를 등록할 때, 태스크의 컨테이너가 사용자를 대신해 연결된 정책에 지정된 AWS API를 호출할 수 있게 하는 IAM 역할의 태스크 역할을 제공할 수 있어요. 자세한 내용은 Amazon ECS 태스크 IAM 역할(Amazon ECS task IAM role)을 참고하세요. Amazon ECS 최적화 Windows Server AMI를 시작할 때 Windows의 태스크 IAM 역할은 -EnableTaskIAMRole 옵션이 설정되어 있어야 합니다. 컨테이너는 이 기능을 사용하려면 일부 구성 코드도 실행해야 해요.

태스크 실행 역할(Task execution role)

executionRoleArn

  • 유형: String / 필수: 조건부
  • Amazon ECS 컨테이너 에이전트가 사용자를 대신해 AWS API 호출을 할 수 있는 권한을 부여하는 태스크 실행 역할의 ARN. 참고: 태스크 실행 IAM 역할은 태스크의 요구 사항에 따라 필요합니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할(Amazon ECS task execution IAM role)을 참고하세요.

네트워크 모드(Network mode)

networkMode

  • 유형: String / 필수: 아니요
  • 태스크의 컨테이너에 사용할 Docker 네트워킹 모드. Amazon EC2 Linux 인스턴스에 호스팅된 Amazon ECS 태스크의 유효 값은 none, bridge, awsvpc, host입니다. 네트워크 모드를 지정하지 않으면 기본 네트워크 모드는 bridge입니다. Amazon EC2 Windows 인스턴스에 호스팅된 태스크의 유효 값은 default, awsvpc이며, 지정하지 않으면 기본 네트워크 모드가 사용됩니다.
    • 네트워크 모드가 none이면 태스크의 컨테이너는 외부 연결성이 없고 컨테이너 정의에서 포트 매핑을 지정할 수 없습니다.
    • 네트워크 모드가 bridge이면 태스크는 태스크를 호스팅하는 각 Amazon EC2 인스턴스 안에서 실행되는 Docker 내장 가상 네트워크를 사용합니다. Linux의 내장 가상 네트워크는 bridge Docker 네트워크 드라이버를 사용합니다.
    • 네트워크 모드가 host이면 태스크는 컨테이너 포트를 태스크를 호스팅하는 Amazon EC2 인스턴스의 ENI에 직접 매핑해 Docker의 내장 가상 네트워크를 우회하는 호스트 네트워크를 사용합니다. 이 네트워크 모드에서는 동적 포트 매핑을 사용할 수 없습니다. 이 모드를 사용하는 태스크 정의의 컨테이너는 특정 hostPort 번호를 지정해야 합니다. 호스트의 포트 번호는 여러 태스크가 사용할 수 없습니다. 결과적으로 단일 Amazon EC2 인스턴스에서 같은 태스크 정의의 여러 태스크를 실행할 수 없습니다.
      • 중요: host 네트워크 모드를 사용하는 태스크를 실행할 때는 더 나은 보안을 위해 루트 사용자(UID 0)로 컨테이너를 실행하지 마세요. 보안 모범 사례로 항상 비루트 사용자를 사용하세요.
    • 네트워크 모드가 awsvpc이면 태스크에 탄력적 네트워크 인터페이스가 할당되며, 서비스를 만들거나 태스크 정의로 태스크를 실행할 때 NetworkConfiguration을 지정해야 합니다. 자세한 내용은 Amazon ECS 태스크 네트워킹 옵션(Amazon ECS task networking options for EC2)을 참고하세요.
    • 네트워크 모드가 default이면 태스크는 태스크를 호스팅하는 각 Amazon EC2 인스턴스 안에서 실행되는 Windows의 Docker 내장 가상 네트워크를 사용합니다. Windows의 내장 가상 네트워크는 nat Docker 네트워크 드라이버를 사용합니다.
  • host와 awsvpc 네트워크 모드는 Amazon EC2 네트워크 스택을 사용하므로 컨테이너에 가장 높은 네트워킹 성능을 제공합니다. host와 awsvpc 네트워크 모드에서 노출된 컨테이너 포트는 해당 호스트 포트(host 모드) 또는 연결된 탄력적 네트워크 인터페이스 포트(awsvpc 모드)로 직접 매핑됩니다. 이 때문에 동적 호스트 포트 매핑을 사용할 수 없습니다.
  • 허용되는 네트워크 모드는 기본 EC2 인스턴스의 운영 체제에 따라 다릅니다. Linux이면 어떤 네트워크 모드든 사용할 수 있습니다. Windows이면 default, awsvpc 모드를 사용할 수 있습니다.

런타임 플랫폼(Runtime platform)

operatingSystemFamily

  • 유형: String / 필수: 조건부 / 기본값: LINUX
  • 태스크 정의를 등록할 때 운영 체제 패밀리를 지정합니다. 유효 값은 LINUX, WINDOWS_SERVER_2025_FULL, WINDOWS_SERVER_2025_CORE, WINDOWS_SERVER_2022_CORE, WINDOWS_SERVER_2022_FULL, WINDOWS_SERVER_2019_FULL, WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2016_FULL, WINDOWS_SERVER_2004_CORE, WINDOWS_SERVER_20H2_CORE입니다. 서비스에 사용되는 모든 태스크 정의는 이 파라미터에 대해 같은 값을 가져야 합니다. 태스크 정의가 서비스의 일부일 때 이 값은 서비스 platformFamily 값과 일치해야 합니다.

cpuArchitecture

  • 유형: String / 필수: 조건부
  • 태스크 정의를 등록할 때 CPU 아키텍처를 지정할 수 있습니다. 유효 값은 X86_64와 ARM64입니다. 값을 지정하지 않으면 Amazon ECS는 용량 공급자 구성에 따라 사용 가능한 CPU 아키텍처에 태스크를 배치하려고 시도합니다. 태스크가 특정 CPU 아키텍처에 배치되도록 하려면 태스크 정의에 cpuArchitecture 값을 지정하세요. 서비스에 사용되는 모든 태스크 정의는 이 파라미터에 대해 같은 값을 가져야 합니다. Linux 태스크를 사용할 때는 값을 ARM64로 설정할 수 있습니다. 자세한 내용은 64비트 ARM 워크로드용 Amazon ECS 태스크 정의(Amazon ECS task definitions for 64-bit ARM workloads)를 참고하세요.

태스크 크기(Task size)

태스크 정의를 등록할 때 태스크에 사용되는 총 CPU와 메모리를 지정할 수 있습니다. 이는 컨테이너 정의 수준의 cpu와 memory 값과 별개입니다. Amazon EC2 인스턴스에 호스팅된 태스크의 경우 이 필드는 선택 사항입니다. 참고: 태스크 수준 CPU와 메모리 파라미터는 Windows 컨테이너에 대해 무시됩니다. Windows 컨테이너에는 컨테이너 수준 리소스를 지정할 것을 권장합니다.

cpu

  • 유형: String / 필수: 조건부
  • 참고: 이 파라미터는 Windows 컨테이너에서 지원되지 않습니다.
  • 태스크에 제공할 CPU 단위의 하드 한도. CPU 값을 JSON 파일에서 CPU 단위 또는 가상 CPU(vCPU) 단위의 문자열로 지정할 수 있습니다. 예를 들어 CPU 값을 CPU 단위 기준 1024 또는 vCPU 기준 1 vCPU로 지정할 수 있어요. 태스크 정의가 등록되면 vCPU 값은 CPU 단위를 나타내는 정수로 변환됩니다. 이 필드는 선택 사항입니다. 클러스터에 요청된 CPU 단위를 사용할 수 있는 등록된 컨테이너 인스턴스가 없으면 태스크가 실패합니다. 0.125 vCPU와 192 vCPU 사이의 값이 지원됩니다.

memory

  • 유형: String / 필수: 조건부
  • 참고: 이 파라미터는 Windows 컨테이너에서 지원되지 않습니다.
  • 태스크에 제공할 메모리의 하드 한도. 메모리 값을 태스크 정의에서 mebibyte(MiB) 또는 기가바이트(GB) 단위의 문자열로 지정할 수 있습니다. 예를 들어 메모리 값을 MiB 기준 3072 또는 GB 기준 3 GB로 지정할 수 있어요. 태스크 정의가 등록되면 GB 값은 MiB를 나타내는 정수로 변환됩니다. 이 필드는 선택 사항이며 어떤 값이든 사용할 수 있습니다. 태스크 수준 메모리 값이 지정되면 컨테이너 수준 메모리 값은 선택 사항입니다. 클러스터에 요청된 메모리를 사용할 수 있는 등록된 컨테이너 인스턴스가 없으면 태스크가 실패합니다. 특정 인스턴스 유형에 대해 태스크에 가능한 한 많은 메모리를 제공하면 리소스 사용률을 최대화할 수 있어요. 자세한 내용은 Amazon ECS Linux 컨테이너 인스턴스 메모리 예약(Reserving Amazon ECS Linux container instance memory)을 참고하세요.

컨테이너 정의(Container definitions)

태스크 정의를 등록할 때 컨테이너 인스턴스의 Docker 데몬에 전달되는 컨테이너 정의 목록을 지정해야 합니다. 컨테이너 정의에서 다음 파라미터가 허용됩니다.

표준 컨테이너 정의 파라미터

name

  • 유형: String / 필수: 예
  • 컨테이너의 이름. 최대 255자의 문자, 숫자, 하이픈, 밑줄이 허용됩니다. 태스크 정의에서 여러 컨테이너를 연결한다면 한 컨테이너의 이름을 다른 컨테이너의 links에 입력할 수 있어요. 이는 컨테이너를 연결하기 위한 것입니다.

image

  • 유형: String / 필수: 예
  • 컨테이너를 시작하는 데 사용할 이미지. 이 문자열은 Docker 데몬에 직접 전달됩니다. 기본적으로 Docker Hub 레지스트리의 이미지를 사용할 수 있습니다. repository-url/image:tag 또는 repository-url/image@digest로 다른 리포지토리도 지정할 수 있습니다. 최대 255자의 문자, 숫자, 하이픈, 밑줄, 콜론, 마침표, 슬래시, 숫자 기호가 허용됩니다.
    • 새 태스크가 시작되면 Amazon ECS 컨테이너 에이전트가 지정된 이미지와 태그의 최신 버전을 가져와 사용합니다. 그러나 리포지토리 이미지의 이후 업데이트는 이미 실행 중인 태스크에 전파되지 않습니다.
    • 태스크 정의의 이미지 경로에 태그나 다이제스트를 지정하지 않으면 Amazon ECS 컨테이너 에이전트가 latest 태그를 사용해 지정된 이미지를 가져옵니다.
    • 프라이빗 레지스트리의 이미지가 지원됩니다. 자세한 내용은 Amazon ECS에서 비-AWS 컨테이너 이미지 사용(Using non-AWS container images in Amazon ECS)을 참고하세요.
    • Amazon ECR 리포지토리의 이미지는 전체 registry/repository:tag 또는 registry/repository@digest 명명 규칙으로 지정할 수 있습니다(예: aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest 또는 aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE).
    • Docker Hub의 공식 리포지토리 이미지는 단일 이름을 사용합니다(예: ubuntu 또는 mongo).
    • Docker Hub의 다른 리포지토리 이미지는 조직 이름으로 한정됩니다(예: amazon/amazon-ecs-agent).
    • 다른 온라인 리포지토리의 이미지는 도메인 이름으로 추가 한정됩니다(예: quay.io/assemblyline/ubuntu).

versionConsistency

  • 유형: String / 유효 값: enabled | disabled / 필수: 아니요
  • Amazon ECS가 컨테이너 정의의 컨테이너 이미지 태그를 이미지 다이제스트로 해석할지 여부를 지정합니다. 기본적으로 이 동작은 enabled입니다. 컨테이너의 값을 disabled로 설정하면 Amazon ECS는 컨테이너 이미지 태그를 다이제스트로 해석하지 않고 배포에 컨테이너 정의에 지정된 원래 이미지 URI를 사용합니다. 컨테이너 이미지 해석에 대한 자세한 내용은 컨테이너 이미지 해석(Container image resolution)을 참고하세요.

memory

  • 유형: Integer / 필수: 아니요
  • 컨테이너에 제공할 메모리 양(MiB). 컨테이너가 여기에 지정된 메모리를 초과하려고 하면 컨테이너가 종료됩니다. 태스크 내 모든 컨테이너에 예약된 총 메모리는 태스크 메모리 값이 지정된 경우 그 값보다 낮아야 합니다. 태스크 수준 또는 컨테이너 수준 메모리 값을 지정해야 합니다. 컨테이너 수준 memory와 memoryReservation 값을 모두 지정하면 memory 값이 memoryReservation 값보다 커야 합니다. memoryReservation을 지정하면 그 값이 컨테이너가 배치된 컨테이너 인스턴스의 사용 가능한 메모리 리소스에서 차감됩니다. 그렇지 않으면 memory 값이 사용됩니다. Docker 20.10.0 이상 데몬은 컨테이너에 최소 6 MiB 메모리를 예약하므로 컨테이너에 6 MiB 미만의 메모리를 지정하지 마세요. Docker 19.03.13-ce 이하 데몬은 최소 4 MiB를 예약합니다.

memoryReservation

  • 유형: Integer / 필수: 아니요
  • 컨테이너에 예약할 메모리의 소프트 한도(MiB). 시스템 메모리가 경합 상태일 때 Docker는 컨테이너 메모리를 이 소프트 한도로 유지하려고 시도합니다. 그러나 컨테이너는 필요할 때 더 많은 메모리를 사용할 수 있습니다. 컨테이너는 memory 파라미터로 지정된 하드 한도(해당되는 경우) 또는 컨테이너 인스턴스의 사용 가능한 모든 메모리 중 먼저 도달하는 것까지 사용할 수 있어요. 태스크 수준 메모리 값이 지정되지 않으면 컨테이너 정의에서 memory 또는 memoryReservation 중 하나 또는 둘 다에 0이 아닌 정수를 지정해야 합니다. 둘 다 지정하면 memory가 memoryReservation보다 커야 합니다. 예를 들어 컨테이너가 보통 128 MiB 메모리를 사용하지만 때때로 짧은 시간 동안 256 MiB로 버스트한다고 가정해 보세요. memoryReservation을 128 MiB, 메모리 하드 한도를 300 MiB로 설정할 수 있습니다. 이 구성은 컨테이너가 컨테이너 인스턴스의 나머지 리소스에서 128 MiB만 예약할 수 있게 하면서, 필요할 때 더 많은 메모리를 사용할 수 있게 합니다. 참고: 이 파라미터는 Windows 컨테이너에서 지원되지 않습니다.

포트 매핑(Port mappings)

portMappings

  • 유형: 객체 배열 / 필수: 아니요
  • 포트 매핑은 컨테이너의 네트워크 포트를 외부에 노출합니다. 이를 통해 클라이언트가 애플리케이션에 액세스할 수 있고, 같은 태스크 안의 컨테이너 간 통신에도 사용됩니다.
  • awsvpc 네트워크 모드를 사용하는 태스크 정의의 경우 containerPort만 지정하세요. hostPort는 항상 무시되고, 컨테이너 포트는 호스트의 무작위 높은 번호 포트에 자동 매핑됩니다.
  • Windows의 포트 매핑은 localhost가 아닌 NetNAT 게이트웨이 주소를 사용합니다. Windows에는 포트 매핑용 루프백이 없으므로 호스트 자체에서 컨테이너의 매핑된 포트에 액세스할 수 없습니다.
  • 태스크가 RUNNING 상태에 도달하면 수동·자동 호스트 및 컨테이너 포트 할당은 다음 위치에서 볼 수 있습니다: 콘솔(선택한 태스크의 컨테이너 설명에 있는 Network Bindings 섹션), AWS CLI(describe-tasks 명령 출력의 networkBindings 섹션), API(DescribeTasks 응답), 메타데이터(태스크 메타데이터 엔드포인트).

appProtocol

  • 유형: String / 필수: 아니요
  • 포트 매핑에 사용되는 애플리케이션 프로토콜. 이 파라미터는 Service Connect에만 적용됩니다. 이 파라미터를 애플리케이션이 사용하는 프로토콜과 일치하도록 설정할 것을 권장합니다. 설정하면 Amazon ECS가 service connect 프록시에 프로토콜별 연결 처리를 추가하고, Amazon ECS 콘솔과 CloudWatch에 프로토콜별 원격 측정(telemetry)을 추가합니다. 이 파라미터에 값을 설정하지 않으면 TCP가 사용되지만 Amazon ECS는 TCP에 대한 프로토콜별 원격 측정을 추가하지 않습니다. 유효 프로토콜 값: "http" | "http2" | "grpc".

containerPort

  • 유형: Integer / 필수: portMappings 사용 시 예
  • 사용자 지정 또는 자동 할당된 호스트 포트에 바인딩된 컨테이너의 포트 번호. awsvpc 네트워크 모드를 사용하는 태스크에는 containerPort로 노출된 포트를 지정합니다. EC2 용량 공급자와 함께 컨테이너를 사용하고 호스트 포트를 지정하지 않으면 컨테이너는 임시 포트 범위에서 호스트 포트를 자동으로 받습니다. 이렇게 자동 할당된 포트 매핑은 컨테이너 인스턴스의 100개 예약 포트 할당량에 계산되지 않습니다.

containerPortRange

  • 유형: String / 필수: 아니요
  • 동적으로 매핑된 호스트 포트 범위에 바인딩된 컨테이너의 포트 번호 범위. 이 파라미터는 register-task-definition API로만 설정할 수 있습니다. 다음 규칙이 적용됩니다:
    • bridge 또는 awsvpc 네트워크 모드 중 하나를 사용해야 합니다.
    • Linux와 Windows 운영 체제 모두에서 사용할 수 있습니다.
    • 컨테이너 인스턴스에는 컨테이너 에이전트 버전 1.67.0 이상과 ecs-init 패키지 1.67.0-1 이상이 있어야 합니다.
    • 컨테이너당 최대 100개의 포트 범위를 지정할 수 있습니다.
    • hostPortRange는 지정하지 않습니다. hostPortRange 값은 다음과 같이 설정됩니다: awsvpc 모드 태스크의 컨테이너는 hostPort가 containerPort와 같은 값으로 설정됩니다(정적 매핑 전략). bridge 모드 태스크의 컨테이너는 Amazon ECS 에이전트가 기본 임시 범위에서 열린 호스트 포트를 찾아 Docker에 전달해 컨테이너 포트에 바인딩합니다.
    • containerPortRange 유효 값은 1~65535입니다.
    • 포트는 각 컨테이너의 하나의 포트 매핑에만 포함될 수 있습니다.
    • 겹치는 포트 범위를 지정할 수 없습니다.
    • 범위의 첫 포트는 범위의 마지막 포트보다 작아야 합니다.
    • 포트가 많다면 Docker 데몬 구성 파일의 Docker-proxy를 끄는 것이 좋습니다.
    • DescribeTasks를 호출해 컨테이너 포트에 바인딩된 호스트 포트인 hostPortRange를 볼 수 있습니다. 포트 범위는 EventBridge로 전송되는 Amazon ECS 태스크 이벤트에 포함되지 않습니다.

hostPortRange

  • 유형: String / 필수: 아니요
  • 네트워크 바인딩에 사용되는 호스트의 포트 번호 범위. Docker가 할당하고 Amazon ECS 에이전트가 전달합니다.

hostPort

  • 유형: Integer / 필수: 아니요
  • 컨테이너를 위해 예약할 컨테이너 인스턴스의 포트 번호. 컨테이너 포트 매핑에 비예약 호스트 포트를 지정할 수 있습니다(정적 호스트 포트 매핑). 또는 containerPort를 지정하면서 hostPort를 생략(또는 0으로 설정)할 수 있습니다. 컨테이너는 컨테이너 인스턴스 운영 체제와 Docker 버전의 임시 포트 범위에서 포트를 자동으로 받습니다(동적 호스트 포트 매핑). Docker 1.6.0 이상의 기본 임시 포트 범위는 인스턴스의 /proc/sys/net/ipv4/ip_local_port_range에 나열됩니다. 이 커널 파라미터를 사용할 수 없으면 기본 임시 포트 범위 49153~65535가 사용됩니다. 임시 포트 범위의 호스트 포트를 지정하려고 하지 마세요. 자동 할당을 위해 예약되어 있기 때문입니다. 일반적으로 32768 미만의 포트는 임시 포트 범위 밖에 있습니다. ECS_DYNAMIC_HOST_PORT_RANGE 설정을 사용해 동적으로 할당된 호스트 포트의 사용자 지정 범위를 지정할 수 있습니다. 기본 예약 포트는 SSH용 22, Docker 포트 2375와 2376, Amazon ECS 컨테이너 에이전트 포트 51678-51680입니다. 실행 중인 태스크에 대해 이전에 사용자가 지정한 호스트 포트도 태스크가 실행되는 동안 예약됩니다. 태스크가 중지되면 호스트 포트가 해제됩니다. 현재 예약 포트는 describe-container-instances 출력의 remainingResources에 표시됩니다. 컨테이너 인스턴스는 한 번에 기본 예약 포트를 포함해 최대 100개의 예약 포트를 가질 수 있습니다. 자동 할당된 포트는 100개 예약 포트 할당량에 계산되지 않습니다.

name

  • 유형: String / 필수: 서비스에서 Service Connect와 VPC Lattice를 구성하려면 필요
  • 포트 매핑에 사용되는 이름. 이 파라미터는 Service Connect와 VPC Lattice에만 적용됩니다. 서비스의 Service Connect 및 VPC Lattice 구성에서 사용하는 이름입니다.
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]

protocol

  • 유형: String / 필수: 아니요
  • 포트 매핑에 사용되는 프로토콜. 유효 값은 tcp와 udp입니다. 기본값은 tcp입니다. 중요: Service Connect는 tcp만 지원합니다. 이 필드가 설정되지 않으면 tcp가 암시됩니다. 중요: UDP 지원은 Amazon ECS 컨테이너 에이전트 버전 1.2.0 이상으로 시작되었거나 버전 1.3.0 이상으로 업데이트된 컨테이너 인스턴스에서만 사용할 수 있습니다.

호스트 포트를 지정하는 경우:

"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]

자동 할당된 호스트 포트를 원하는 경우:

"portMappings": [
    {
        "containerPort": integer
    }
    ...
]

프라이빗 리포지토리 자격 증명(Private repository credentials)

repositoryCredentials

  • 유형: RepositoryCredentials 객체 / 필수: 아니요
  • 프라이빗 레지스트리 인증용 리포지토리 자격 증명.

credentialsParameter

  • 유형: String / 필수: repositoryCredentials 사용 시 예
  • 프라이빗 리포지토리 자격 증명이 포함된 시크릿의 ARN. 참고: Amazon ECS API, AWS CLI, AWS SDK를 사용할 때 시크릿이 시작하려는 태스크와 같은 리전에 있으면 전체 ARN 또는 시크릿 이름을 사용할 수 있습니다. AWS Management Console을 사용할 때는 시크릿의 전체 ARN을 지정해야 합니다.
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]

고급 컨테이너 정의 파라미터

재시작 정책(Restart policy)

restartPolicy

  • 컨테이너 재시작 정책과 관련 구성 파라미터. 컨테이너에 재시작 정책을 설정하면 Amazon ECS가 태스크를 교체하지 않고 컨테이너를 다시 시작할 수 있습니다.
  • enabled — 유형: Boolean / 필수: 예. 컨테이너에 재시작 정책이 활성화되었는지 여부.
  • ignoredExitCodes — 유형: Integer 배열 / 필수: 아니요. Amazon ECS가 무시하고 재시작을 시도하지 않을 종료 코드 목록. 최대 50개의 컨테이너 종료 코드를 지정할 수 있습니다. 기본적으로 Amazon ECS는 어떤 종료 코드도 무시하지 않습니다.
  • restartAttemptPeriod — 유형: Integer / 필수: 아니요. 재시작을 시도하기 전에 컨테이너가 실행되어야 하는 시간(초). 컨테이너는 restartAttemptPeriod초마다 한 번만 재시작할 수 있습니다. 최소 60초, 최대 1800초로 설정할 수 있으며 기본값은 300초입니다.
상태 확인(Health check)

healthCheck

  • 컨테이너 상태 확인 명령과 관련 구성 파라미터.
  • command — 컨테이너가 정상인지 판단하기 위해 실행하는 명령을 나타내는 문자열 배열. 명령 인수를 직접 실행하는 CMD 또는 컨테이너의 기본 셸로 실행하는 CMD-SHELL로 시작할 수 있습니다. 둘 다 지정하지 않으면 CMD가 사용됩니다. 종료 코드 0(stderr 출력 없음)은 성공, 0이 아닌 종료 코드는 실패를 나타냅니다. AWS Management Console에서 태스크 정의를 등록할 때는 쉼표로 구분된 명령 목록을 사용합니다(예: CMD-SHELL, curl -f http://localhost/ || exit 1). JSON 패널, AWS CLI 또는 API로 등록할 때는 명령 목록을 대괄호로 묶습니다(예: [ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]).
  • interval — 각 상태 확인 사이의 시간(초). 5~300초를 지정할 수 있으며 기본값은 30초입니다.
  • timeout — 상태 확인 성공을 기다리는 시간(초). 실패로 간주되기 전입니다. 2~60초를 지정할 수 있으며 기본값은 5초입니다.
  • retries — 컨테이너가 비정상으로 간주되기 전에 실패한 상태 확인을 재시도하는 횟수. 1~10회를 지정할 수 있으며 기본값은 3회입니다.
  • startPeriod — 실패한 상태 확인이 최대 재시도 횟수에 집계되기 전에 컨테이너가 부트스트랩할 시간을 제공하는 선택적 유예 기간. 0~300초를 지정할 수 있으며 기본적으로 비활성화됩니다.
환경(Environment)

cpu

  • 유형: Integer / 필수: 아니요
  • Amazon ECS 컨테이너 에이전트가 컨테이너에 예약하는 CPU 단위 수. Linux에서 이 파라미터는 CpuShares에 매핑됩니다. 각 Amazon EC2 인스턴스 유형에 사용 가능한 CPU 단위 수는 해당 인스턴스 유형의 vCPU 수에 1,024를 곱해 결정할 수 있습니다. Linux 컨테이너는 할당된 수량과 같은 비율로 컨테이너 인스턴스의 다른 컨테이너와 미할당 CPU 단위를 공유합니다. Linux 컨테이너 인스턴스에서 Docker 데몬은 CPU 값을 사용해 실행 중인 컨테이너의 상대적 CPU 공유 비율을 계산합니다. Linux 커널이 허용하는 최소 유효 CPU 공유 값은 2, 최대는 262144입니다. 그러나 CPU 파라미터는 필수가 아니며 컨테이너 정의에서 2 미만과 262144 초과의 CPU 값을 사용할 수 있습니다. Windows 컨테이너 인스턴스에서 CPU 할당량은 절대 할당량으로 적용됩니다. Windows 컨테이너는 태스크 정의에 정의된 지정된 CPU 양에만 액세스할 수 있습니다.

gpu

  • 유형: ResourceRequirement 객체 / 필수: 아니요
  • Amazon ECS 컨테이너 에이전트가 컨테이너에 예약하는 물리적 GPU 수. 정수 값, 분수 GPU의 소수 값, 또는 ALL을 지정할 수 있습니다. ALL을 지정하면 컨테이너 인스턴스의 모든 GPU가 컨테이너에 할당됩니다. 소수 값(예: 0.125, 0.25, 0.5)을 지정하면 Amazon ECS는 요청된 GPU 용량을 제공하는 분수 GPU 인스턴스(G6f)에 태스크를 배치합니다. 태스크의 모든 컨테이너에 예약된 GPU 수는 태스크가 시작되는 컨테이너 인스턴스의 사용 가능한 GPU 수를 초과해서는 안 됩니다. 참고: 이 파라미터는 Windows 컨테이너에서 지원되지 않습니다.

essential

  • 유형: Boolean / 필수: 아니요
  • 컨테이너의 essential 파라미터가 true로 표시되고 그 컨테이너가 어떤 이유로든 실패하거나 중지되면, 태스크의 일부인 다른 모든 컨테이너가 중지됩니다. false로 표시되면 그 실패는 태스크의 나머지 컨테이너에 영향을 주지 않습니다. 이 파라미터가 생략되면 컨테이너는 essential로 가정됩니다. 모든 태스크는 essential 컨테이너를 하나 이상 가져야 합니다.
"essential": true|false

entryPoint

  • 유형: String 배열 / 필수: 아니요
  • 컨테이너에 전달되는 엔트리 포인트. 중요: 초기 버전의 Amazon ECS 컨테이너 에이전트는 entryPoint 파라미터를 제대로 처리하지 못합니다. 문제가 있다면 컨테이너 에이전트를 업데이트하거나 명령과 인수를 command 배열 항목으로 입력하세요.
"entryPoint": ["string", ...]

command

  • 유형: String 배열 / 필수: 아니요
  • 컨테이너에 전달되는 명령. 여러 인수가 있으면 각 인수가 배열의 분리된 문자열인지 확인하세요.
"command": ["string", ...]

workingDirectory

  • 유형: String / 필수: 아니요
  • 컨테이너 안에서 명령을 실행할 작업 디렉터리. WorkingDir과 --workdir 옵션에 매핑됩니다.
"workingDirectory": "string"

environmentFiles

  • 유형: 객체 배열 / 필수: 아니요
  • 컨테이너에 전달할 환경 변수가 포함된 파일 목록. Docker run 명령의 --env-file 옵션에 매핑됩니다. FIPS가 켜져 있을 때 마침표(.)가 있는 버킷 이름(예: amzn-s3-demo-bucket1.name.example)은 지원되지 않습니다. Windows 컨테이너에서는 사용할 수 없습니다. 최대 10개의 환경 파일을 지정할 수 있습니다. 파일은 .env 파일 확장자를 가져야 합니다. 환경 파일의 각 줄은 VARIABLE=VALUE 형식의 환경 변수를 포함합니다. #로 시작하는 줄은 주석으로 처리되어 무시됩니다. 컨테이너 정의에 개별 환경 변수가 지정되면 환경 파일의 변수보다 우선합니다. 여러 환경 파일에 같은 변수가 포함되면 위에서 아래로 처리됩니다. 고유한 변수 이름을 사용할 것을 권장합니다.
  • value — 유형: String / 필수: 예. 환경 변수 파일이 포함된 Amazon S3 객체의 ARN.
  • type — 유형: String / 필수: 예. 사용할 파일 유형. 지원되는 유일한 값은 s3입니다.

environment

  • 유형: 객체 배열 / 필수: 아니요
  • 컨테이너에 전달할 환경 변수. Env와 --env 옵션에 매핑됩니다. 중요: 자격 증명 데이터 같은 민감한 정보에는 평문 환경 변수를 사용하지 않는 것을 권장합니다.
  • name — 유형: String / 필수: environment 사용 시 예. 환경 변수 이름.
  • value — 유형: String / 필수: environment 사용 시 예. 환경 변수 값.
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]

secrets

  • 유형: 객체 배열 / 필수: 아니요
  • 컨테이너에 노출할 시크릿을 나타내는 객체.
  • name — 유형: String / 필수: 예. 컨테이너에서 환경 변수로 설정할 값.
  • valueFrom — 유형: String / 필수: 예. 컨테이너에 노출할 시크릿. AWS Secrets Manager 시크릿의 전체 ARN 또는 AWS Systems Manager Parameter Store 파라미터의 전체 ARN. 시크릿이 시작하려는 태스크와 같은 AWS 리전에 있으면 전체 ARN 또는 이름을 사용할 수 있습니다. 다른 리전에 있으면 전체 ARN을 지정해야 합니다.
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
네트워크 설정(Network settings)

disableNetworking

  • 유형: Boolean / 필수: 아니요
  • 이 파라미터가 true이면 컨테이너 안에서 네트워킹이 꺼집니다. 참고: 이 파라미터는 Windows 컨테이너나 awsvpc 네트워크 모드를 사용하는 태스크에서 지원되지 않습니다. 기본값은 false.
"disableNetworking": true|false

links

  • 유형: String 배열 / 필수: 아니요
  • link 파라미터는 컨테이너가 포트 매핑 없이 서로 통신할 수 있게 합니다. 이 파라미터는 태스크 정의의 네트워크 모드가 bridge로 설정된 경우에만 지원됩니다. name:internalName 구조는 Docker links의 name:alias와 유사합니다. 참고: 이 파라미터는 Windows 컨테이너나 awsvpc 네트워크 모드를 사용하는 태스크에서 지원되지 않습니다. 중요: 같은 컨테이너 인스턴스에 함께 배치된 컨테이너는 links나 호스트 포트 매핑 없이 서로 통신할 수 있습니다. 컨테이너 인스턴스의 네트워크 격리는 보안 그룹과 VPC 설정으로 제어됩니다.
"links": ["name:internalName", ...]

hostname

  • 유형: String / 필수: 아니요
  • 컨테이너에 사용할 호스트 이름. 참고: awsvpc 네트워크 모드를 사용하면 hostname 파라미터가 지원되지 않습니다.
"hostname": "string"

dnsServers

  • 유형: String 배열 / 필수: 아니요
  • 컨테이너에 제공되는 DNS 서버 목록. 참고: Windows 컨테이너나 awsvpc 네트워크 모드를 사용하는 태스크에서는 지원되지 않습니다.

dnsSearchDomains

  • 유형: String 배열 / 필수: 아니요
  • 컨테이너에 제공되는 DNS 검색 도메인 목록. 참고: Windows 컨테이너나 awsvpc 네트워크 모드를 사용하는 태스크에서는 지원되지 않습니다.

extraHosts

  • 유형: 객체 배열 / 필수: 아니요
  • 컨테이너의 /etc/hosts 파일에 추가할 호스트 이름과 IP 주소 매핑 목록. 참고: Windows 컨테이너나 awsvpc 네트워크 모드를 사용하는 태스크에서는 지원되지 않습니다.
  • hostname — 유형: String / 필수: extraHosts 사용 시 예. /etc/hosts 항목에 사용할 호스트 이름.
  • ipAddress — 유형: String / 필수: extraHosts 사용 시 예. /etc/hosts 항목에 사용할 IP 주소.
스토리지 및 로깅(Storage and logging)

readonlyRootFilesystem

  • 유형: Boolean / 필수: 아니요
  • 이 파라미터가 true이면 컨테이너에 루트 파일 시스템에 대한 읽기 전용 액세스가 부여됩니다. 참고: 이 파라미터는 Windows 컨테이너에서 지원되지 않습니다. 기본값은 false.
"readonlyRootFilesystem": true|false

mountPoints

  • 유형: 객체 배열 / 필수: 아니요
  • 컨테이너의 데이터 볼륨에 대한 마운트 포인트. Windows 컨테이너는 $env:ProgramData와 같은 드라이브에서 전체 디렉터리를 마운트할 수 있습니다. Windows 컨테이너는 다른 드라이브의 디렉터리를 마운트할 수 없으며, 마운트 포인트는 드라이브 간에 사용될 수 없습니다. Amazon EBS 볼륨을 Amazon ECS 태스크에 직접 연결하려면 마운트 포인트를 지정해야 합니다.
  • sourceVolume — 유형: String / 필수: mountPoints 사용 시 예. 마운트할 볼륨의 이름.
  • containerPath — 유형: String / 필수: mountPoints 사용 시 예. 볼륨이 마운트될 컨테이너의 경로.
  • readOnly — 유형: Boolean / 필수: 아니요. 이 값이 true이면 컨테이너가 볼륨에 읽기 전용 액세스합니다. false이면 컨테이너가 볼륨에 쓸 수 있습니다. 기본값은 false입니다. Windows 운영 체제 태스크에서는 기본값 false로 유지하세요.

volumesFrom

  • 유형: 객체 배열 / 필수: 아니요
  • 다른 컨테이너에서 마운트할 데이터 볼륨.
  • sourceContainer — 유형: String / 필수: volumesFrom 사용 시 예. 볼륨을 마운트할 컨테이너의 이름.
  • readOnly — 유형: Boolean / 필수: 아니요. true이면 읽기 전용, false이면 쓸 수 있습니다. 기본값은 false.
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]

logConfiguration

  • 유형: LogConfiguration 객체 / 필수: 아니요
  • 컨테이너의 로그 구성 사양. 기본적으로 컨테이너는 Docker 데몬이 사용하는 것과 같은 로깅 드라이버를 사용합니다. 그러나 컨테이너 정의에서 이 파라미터로 로그 드라이버를 지정해 Docker 데몬과 다른 로깅 드라이버를 사용할 수 있습니다. 컨테이너의 로그 구성을 지정할 때 다음을 고려하세요:
    • Amazon ECS는 Docker 데몬에서 사용할 수 있는 로깅 드라이버의 하위 집합을 지원합니다.
    • 이 파라미터는 컨테이너 인스턴스에 Docker Remote API 버전 1.18 이상이 필요합니다.
    • 컨테이너 인스턴스에서 실행되는 Amazon ECS 컨테이너 에이전트는 해당 인스턴스에 배치된 컨테이너가 이러한 로그 구성 옵션을 사용할 수 있기 전에 ECS_AVAILABLE_LOGGING_DRIVERS 환경 변수로 사용 가능한 로깅 드라이버를 등록해야 합니다.
  • logDriver — 유형: String / 유효 값: "awslogs" | "fluentd" | "gelf" | "json-file" | "journald" | "splunk" | "syslog" | "awsfirelens" / 필수: logConfiguration 사용 시 예. 컨테이너에 사용할 로그 드라이버. 지원되는 로그 드라이버는 awslogs, fluentd, gelf, json-file, journald, syslog, splunk, awsfirelens. 목록에 없는 사용자 지정 드라이버가 있다면 GitHub에서 사용 가능한 Amazon ECS 컨테이너 에이전트 프로젝트를 포크해 해당 드라이버로 작동하도록 사용자 지정할 수 있습니다.
  • options — 유형: 문자열과 문자열 맵 / 필수: 아니요. 로그 드라이버에 보낼 구성 옵션의 키/값 맵. awslogs 라우터를 사용해 로그를 CloudWatch로 라우팅할 때 지정할 수 있는 옵션은 다음과 같습니다:
    • awslogs-create-group — 로그 그룹을 자동으로 만들지 여부. 지정하지 않으면 기본값 false. 사용하려면 IAM 정책에 logs:CreateLogGroup 권한이 필요합니다.
    • awslogs-region — 필수. awslogs 로그 드라이버가 Docker 로그를 보낼 AWS 리전. 지정된 로그 그룹이 이 옵션으로 지정한 리전에 존재하는지 확인하세요.
    • awslogs-group — 필수. awslogs 로그 드라이버가 로그 스트림을 보내는 로그 그룹을 지정합니다.
    • awslogs-stream-prefix — 선택. 로그 스트림을 지정된 접두사, 컨테이너 이름, 컨테이너가 속한 Amazon ECS 태스크의 ID와 연결합니다. 접두사를 지정하면 로그 스트림은 prefix-name/container-name/ecs-task-id 형식을 취합니다. 접두사를 지정하지 않으면 로그 스트림은 Docker 데몬이 할당한 컨테이너 ID로 이름이 지정됩니다. Amazon ECS 콘솔을 사용할 때 Log 창에 로그가 나타나도록 하려면 로그의 스트림 접두사를 지정해야 합니다.
    • awslogs-datetime-format — Python strftime 형식의 다중 줄 시작 패턴을 정의합니다. awslogs-datetime-format과 awslogs-multiline-pattern 둘 다는 구성할 수 없습니다.
    • awslogs-multiline-pattern — 정규 표현식을 사용하는 다중 줄 시작 패턴을 정의합니다. awslogs-datetime-format이 구성되면 이 옵션은 무시됩니다.
    • 모든 지원 로그 드라이버에 적용되는 옵션:
      • mode — 유효 값: non-blocking | blocking. 로그 흐름이 중단될 때 blocking 모드를 사용하면 로그를 쓸 수 없을 때 컨테이너 코드의 stdout/stderr 쓰기 호출이 차단되어 애플리케이션이 응답하지 않게 될 수 있습니다. non-blocking 모드에서는 컨테이너 로그가 max-buffer-size 옵션으로 구성된 메모리 내 중간 버퍼에 저장되어 로그를 보낼 수 없을 때 애플리케이션이 응답하지 않게 방지합니다. 서비스 가용성을 보장하고 일부 로그 손실을 허용한다면 이 모드를 권장합니다. logConfiguration에 mode 옵션을 지정하지 않고 계정 설정을 구성하지 않으면 Amazon ECS는 기본적으로 non-blocking 모드로 설정합니다. 2025년 6월 25일부터 Amazon ECS는 기본 로그 드라이버 모드를 logging보다 task availability를 우선시하도록 blocking에서 non-blocking으로 변경했습니다. blocking을 계속 사용하려면 컨테이너 정의의 logConfiguration에서 mode 옵션을 blocking으로 설정하거나 defaultLogDriverMode 계정 설정을 blocking으로 설정하세요.
      • max-buffer-size — 기본값: 10 m. non-blocking 모드에서 중간 메시지 저장에 사용되는 버퍼 크기를 제어합니다. 버퍼가 가득 차면 더 이상 저장할 수 없고 손실됩니다.
    • splunk 라우터로 로그를 라우팅하려면 splunk-token과 splunk-url을 지정해야 합니다.
    • awsfirelens 라우터로 로그를 라우팅할 때는 log-driver-buffer-limit 옵션을 설정해 로그 라우터 컨테이너로 보내기 전에 메모리에 버퍼링되는 로그 줄 수를 제한할 수 있습니다. 대상에 따라 지정할 수 있는 다른 옵션이 있습니다: Amazon Data Firehose는 region과 delivery_stream, Kinesis Data Streams는 region과 stream, OpenSearch Service는 Name, Host, Port, Index, Type, Aws_auth, Aws_region, Suppress_Type_Name, tls, Amazon S3는 bucket, region, total_file_size, upload_timeout, use_put_object.
  • secretOptions — 유형: 객체 배열 / 필수: 아니요. 로그 구성에 전달할 시크릿을 나타내는 객체. 로그 구성에 사용되는 시크릿에는 인증 토큰, 인증서, 암호화 키가 포함될 수 있습니다.
    • name — 유형: String / 필수: 예. 컨테이너에서 환경 변수로 설정할 값.
    • valueFrom — 유형: String / 필수: 예. 컨테이너의 로그 구성에 노출할 시크릿.

firelensConfiguration

  • 유형: FirelensConfiguration 객체 / 필수: 아니요
  • 컨테이너의 FireLens 구성. 컨테이너 로그용 로그 라우터를 지정·구성하는 데 사용됩니다.
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
  • options — 유형: 문자열과 문자열 맵 / 필수: 아니요. 로그 라우터를 구성할 때 사용할 옵션의 키/값 맵. 사용자 지정 구성 파일을 지정하거나 태스크, 태스크 정의, 클러스터, 컨테이너 인스턴스 세부 정보 같은 추가 메타데이터를 로그 이벤트에 추가하는 데 사용할 수 있습니다. 구문은 "options": { "enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3::: amzn-s3-demo-bucket /fluent.conf|filepath"}입니다.
  • type — 유형: String / 필수: 예. 사용할 로그 라우터. 유효 값은 fluentd 또는 fluentbit입니다.
보안(Security)

credentialSpecs

  • 유형: String 배열 / 필수: 아니요
  • Active Directory 인증용 컨테이너를 구성하는 CredSpec 파일에 대한 SSM 또는 Amazon S3의 ARN 목록. 최대 ARN 수는 1입니다. 두 가지 형식이 있습니다:
    • credentialspecdomainless:MyARN — Secrets Manager의 시크릿용 추가 섹션이 있는 CredSpec을 제공합니다. 시크릿에 도메인 로그인 자격 증명을 제공합니다. 컨테이너 인스턴스를 도메인에 가입시키지 않고 사용할 수 있습니다.
    • credentialspec:MyARN — 단일 도메인용 CredSpec을 제공합니다. 이 태스크 정의를 사용하는 태스크를 시작하기 전에 컨테이너 인스턴스를 도메인에 가입시켜야 합니다.
    • 두 형식 모두 MyARN을 SSM 또는 Amazon S3의 ARN으로 바꾸세요. 더 나은 보안을 위해 도메인리스 인증에서는 인스턴스가 도메인에 가입되지 않습니다.

privileged

  • 유형: Boolean / 필수: 아니요
  • 이 파라미터가 true이면 컨테이너에 호스트 컨테이너 인스턴스에서 상승된 권한(루트 사용자와 유사)이 부여됩니다. privileged로 컨테이너를 실행하는 것은 권장하지 않습니다. 대부분의 경우 privileged를 사용하는 대신 특정 파라미터로 필요한 정확한 권한을 지정할 수 있습니다. 참고: 이 파라미터는 Windows 컨테이너나 Fargate 런치 타입을 사용하는 태스크에서 지원되지 않습니다. 기본값은 false.
"privileged": true|false

user

  • 유형: String / 필수: 아니요
  • 컨테이너 안에서 사용할 사용자. 중요: host 네트워크 모드를 사용하는 태스크를 실행할 때는 루트 사용자(UID 0)로 컨테이너를 실행하지 마세요. 사용자는 user, user:group, uid, uid:gid, user:gid, uid:group 형식으로 지정할 수 있습니다. UID나 GID를 지정할 때는 양의 정수로 지정해야 합니다. 참고: 이 파라미터는 Windows 컨테이너에서 지원되지 않습니다.

dockerSecurityOptions

  • 유형: String 배열 / 유효 값: "no-new-privileges" | "apparmor:PROFILE" | "label: value" | "credentialspec: CredentialSpecFilePath" / 필수: 아니요
  • 여러 보안 시스템에 대한 사용자 지정 구성을 제공하는 문자열 목록. Linux 태스크에서는 SELinux와 AppArmor 다중 레벨 보안 시스템용 사용자 지정 레이블을 참조하는 데 사용할 수 있습니다. Active Directory 인증용 컨테이너를 구성하는 CredSpec 파일을 참조하는 데도 사용할 수 있습니다. 컨테이너 인스턴스에서 실행되는 Amazon ECS 컨테이너 에이전트는 해당 인스턴스에 배치된 컨테이너가 이러한 보안 옵션을 사용할 수 있기 전에 ECS_SELINUX_CAPABLE=true 또는 ECS_APPARMOR_CAPABLE=true 환경 변수로 등록해야 합니다.
리소스 한도(Resource limits)

ulimits

  • 유형: 객체 배열 / 필수: 아니요
  • 컨테이너에 정의할 ulimit 값 목록. 이 값은 운영 체제의 기본 리소스 할당량 설정을 재정의합니다. 컨테이너 인스턴스에 Docker Remote API 버전 1.18 이상이 필요합니다. 참고: Windows 컨테이너에서 지원되지 않습니다.
"ulimits": [
      {
        "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
        "softLimit": integer,
        "hardLimit": integer
      }
      ...
    ]
  • name — 유형: String / 유효 값: "core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack" / 필수: ulimits 사용 시 예. ulimit의 유형.
  • hardLimit — 유형: Integer / 필수: ulimits 사용 시 예. ulimit 유형의 하드 한도. ulimit 유형에 따라 바이트, 초 또는 개수로 지정할 수 있습니다.
  • softLimit — 유형: Integer / 필수: ulimits 사용 시 예. ulimit 유형의 소프트 한도.
Docker 레이블(Docker labels)

dockerLabels

  • 유형: 문자열과 문자열 맵 / 필수: 아니요
  • 컨테이너에 추가할 레이블의 키/값 맵. 컨테이너 인스턴스에 Docker Remote API 버전 1.18 이상이 필요합니다.
"dockerLabels": {"string": "string"
      ...}

기타 컨테이너 정의 파라미터

Amazon ECS 콘솔에서 Configure via JSON 옵션을 사용해 태스크 정의를 등록할 때 다음 컨테이너 정의 파라미터를 사용할 수 있습니다.

Linux 파라미터

linuxParameters

  • 유형: LinuxParameters 객체 / 필수: 아니요
  • KernelCapabilities 같은 컨테이너에 적용되는 Linux 전용 옵션. 참고: Windows 컨테이너에서 지원되지 않습니다.
"linuxParameters": {
      "capabilities": {
        "add": ["string", ...],
        "drop": ["string", ...]
        }
      }
  • capabilities — 유형: KernelCapabilities 객체 / 필수: 아니요. Docker가 제공하는 기본 구성에 추가하거나 제거하는 컨테이너의 Linux 기능.
    • add — 유형: String 배열 / 유효 값: "ALL" | "AUDIT_CONTROL" | ... | "WAKE_ALARM" / 필수: 아니요. Docker가 제공하는 기본 구성에 추가할 Linux 기능.
    • drop — 유형: String 배열 / 유효 값: "ALL" | "AUDIT_CONTROL" | ... | "WAKE_ALARM" / 필수: 아니요. Docker가 제공하는 기본 구성에서 제거할 Linux 기능.
  • devices — 컨테이너에 노출할 호스트 디바이스. 유형: Device 객체 배열 / 필수: 아니요.
    • hostPath — 유형: String / 필수: 예. 호스트 컨테이너 인스턴스의 디바이스 경로.
    • containerPath — 유형: String / 필수: 아니요. 호스트 디바이스를 노출할 컨테이너 안의 경로.
    • permissions — 유형: 문자열 배열 / 유효 값: read | write | mknod. 기본적으로 컨테이너는 디바이스에 대한 read, write, mknod 권한이 있습니다.
  • initProcessEnabled — 컨테이너 안에서 신호를 전달하고 프로세스를 정리하는 init 프로세스를 실행. --init 옵션에 매핑. 컨테이너 인스턴스에 Docker Remote API 버전 1.25 이상이 필요합니다.
  • maxSwap — 컨테이너가 사용할 수 있는 총 스왑 메모리(MiB). --memory-swap 옵션에 매핑되며 값은 컨테이너 메모리와 maxSwap 값의 합입니다. 0이면 스왑을 사용하지 않습니다. swappiness 파라미터를 사용하려면 maxSwap 값을 설정해야 합니다.
  • sharedMemorySize — 유형: Integer. /dev/shm 볼륨의 크기(MiB). --shm-size 옵션에 매핑.
  • swappiness — 컨테이너의 메모리 스와핑 동작을 조정. 0은 필요할 때가 아니면 스와핑을 방지하고, 100은 페이지를 자주 교체합니다. 0~100 사이의 정수. 기본값 60. maxSwap 값을 지정하지 않으면 이 파라미터는 무시됩니다. 참고: Amazon Linux 2023에서 태스크를 사용하면 swappiness 파라미터가 지원되지 않습니다.
  • tmpfs — tmpfs 마운트의 컨테이너 경로, 마운트 옵션, 최대 크기(MiB). --tmpfs 옵션에 매핑. 유형: Tmpfs 객체 배열 / 필수: 아니요.
    • containerPath — 유형: String / 필수: 예. tmpfs 볼륨이 마운트될 절대 파일 경로.
    • mountOptions — 유형: 문자열 배열 / 필수: 아니요 / 유효 값: "defaults" | "ro" | "rw" | ... | "mpol". tmpfs 볼륨 마운트 옵션 목록.
    • size — 유형: Integer / 필수: 예. tmpfs 볼륨의 최대 크기(MiB).
컨테이너 의존성(Container dependency)

dependsOn

  • 유형: ContainerDependency 객체 배열 / 필수: 아니요
  • 컨테이너 시작 및 종료에 정의된 의존성. 컨테이너는 여러 의존성을 포함할 수 있습니다. 컨테이너 시작에 의존성이 정의되면 종료 시에는 반대로 적용됩니다. 참고: 컨테이너가 의존성 제약 조건을 충족하지 못하거나 충족하기 전에 시간 초과되면 Amazon ECS는 의존하는 컨테이너를 다음 상태로 진행시키지 않습니다. 인스턴스에는 컨테이너 의존성을 활성화하기 위해 컨테이너 에이전트 버전 1.26.0 이상이 필요합니다.