AWS CloudFormation
사용 설명서 (API 버전 2010-05-15)

AWS::ECS::TaskDefinition

AWS::ECS::TaskDefinition 리소스는 Amazon Elastic Container Service(Amazon ECS) 작업의 컨테이너 및 볼륨 정의를 설명합니다. 사용할 도커 이미지, 필요한 리소스 그리고 Amazon ECS 서비스 또는 작업을 통해 작업 정의 시작과 관련된 기타 구성을 지정할 수 있습니다.

구문

AWS CloudFormation 템플릿에서 이 엔터티를 선언하려면 다음 구문을 사용합니다.

JSON

{ "Type" : "AWS::ECS::TaskDefinition", "Properties" : { "Volumes" : [ Volume Definition, ... ], "Cpu" : String, "ExecutionRoleArn" : String, "Family" : String, "Memory" : String, "NetworkMode" : String, "PlacementConstraints" : TaskDefinitionPlacementConstraint, "RequiresCompatibilities" : [ String, ... ], "TaskRoleArn" : String, "ContainerDefinitions" : [ Container Definition, ... ] } }

YAML

Type: AWS::ECS::TaskDefinition Properties: Volumes: - Volume Definition Cpu: String ExecutionRoleArn: String Family: String Memory: String NetworkMode: String PlacementConstraints: - TaskDefinitionPlacementConstraint RequiresCompatibilities: - String TaskRoleArn: String ContainerDefinitions: - Container Definition

Properties

속성과 유효한 파라미터에 대한 자세한 내용은 Amazon Elastic Container Service API ReferenceRegisterTaskDefinition을 참조하십시오.

ContainerDefinitions

작업을 구성하는 컨테이너를 설명하는 컨테이너 정의(JSON 형식) 목록입니다.

Required: Yes

유형: Amazon Elastic Container Service TaskDefinition ContainerDefinition의 목록

업데이트 필요 조건: 대체

Cpu

작업에서 사용할 cpu 단위의 개수. EC2 시작 유형을 사용하는 경우에는 이 필드가 선택사항입니다. 지원되는 값은 128개 CPU 단위(0.125 vCPU)~10240개 CPU 단위(10 vCPU) 사이입니다. Fargate 시작 유형을 사용하는 경우 이 필드는 필수 사항이며 다음 값 중 하나를 사용해야 합니다. 이를 통해 memory 파라미터에 유효한 값의 범위가 결정됩니다.

  • 256 (.25 vCPU) - 사용 가능한 memory 값: 0.5GB, 1GB, 2GB

  • 512 (.5 vCPU) - 사용 가능한 memory 값: 1GB, 2GB, 3GB, 4GB

  • 1024 (1 vCPU) - 사용 가능한 memory 값: 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB

  • 2048 (2 vCPU) - 사용 가능한 memory 값: 4GB부터 1GB씩 16GB까지

  • 4096 (4 vCPU) - 사용 가능한 memory 값: 8GB부터 1GB씩 30GB까지

Required: No

Type: String

업데이트 필요 조건: 대체

ExecutionRoleArn

이 작업의 컨테이너가 맡을 수 있는 작업 실행의 Amazon 리소스 이름(ARN). 이 작업의 모든 컨테이너에게는 이 역할에 지정된 권한이 부여됩니다.

Required: No

Type: String

업데이트 필요 조건: 대체

Family

작업 정의가 등록된 패밀리의 이름입니다. 패밀리는 작업 정의의 여러 버전을 그룹화합니다. Amazon ECS에서는 패밀리에 등록한 첫 번째 작업 정의에 개정 번호 1을 부여합니다. Amazon ECS에서는 추가한 각 작업 정의에 개정 번호를 순차적으로 부여합니다.

참고

작업 정의를 업데이트하는 경우 개정 번호를 사용하려면 이 속성을 지정합니다. 값을 지정하지 않으면 작업 정의를 업데이트할 때마다 AWS CloudFormation에서 새 작업 정의를 생성합니다.

Required: No

Type: String

업데이트 필요 조건: 대체

Memory

작업에서 사용하는 메모리의 양(MiB). EC2 시작 유형을 사용하는 경우 이 필드는 선택 사항이며 어떤 값도 사용 가능합니다. Fargate 시작 유형을 사용하는 경우 이 필드는 필수 사항이며 다음 값 중 하나를 사용해야 합니다. 이를 통해 cpu 파라미터에 유효한 값의 범위가 결정됩니다.

  • 0.5GB, 1GB, 2GB - 사용 가능한 cpu 값: 256 (.25 vCPU)

  • 1GB, 2GB, 3GB, 4GB - 사용 가능한 cpu 값: 512 (.5 vCPU)

  • 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB - 사용 가능한 cpu 값: 1024 (1 vCPU)

  • 4GB부터 1GB씩 16GB까지 - 사용 가능한 cpu 값: 2048 (2 vCPU)

  • 8GB부터 1GB씩 30GB까지 - 사용 가능한 cpu 값: 4096 (4 vCPU)

Required: No

Type: String

업데이트 필요 조건: 대체

NetworkMode

작업의 컨테이너에 사용할 도커 네트워킹 모드(예: none, bridge 또는 host). 네트워크 모드에 대한 자세한 내용은 Amazon Elastic Container Service Developer Guide에서 작업 정의 파라미터 주제의 NetworkMode를 참조하십시오.

Fargate 시작 유형은 awsvpc만 지정할 수 있습니다. none, bridge, 또는 host 옵션은 Fargate 시작 유형에서 작동하지 않습니다.

Required: No

Type: String

업데이트 필요 조건: 대체

PlacementConstraints

서비스에서 작업에 대한 배치 제약입니다.

Required: No

Type: Amazon Elastic Container Service Service PlacementConstraint

업데이트 필요 조건: 대체

RequiresCompatibilities

작업에서 필요한 시작 유형. 값을 지정하지 않은 경우 기본값은 EC2입니다. 유효한 값에는 EC2FARGATE이 있습니다.

Required: No

유형: 문자열 목록

업데이트 필요 조건: 대체

TaskRoleArn

사용자 대신 AWS API를 호출하는 작업 권한을 컨테이너에 부여하는 AWS Identity and Access Management(IAM) 역할의 Amazon 리소스 이름(ARN)입니다. 자세한 내용은 Amazon Elastic Container Service Developer Guide에서 작업에 대한 IAM 역할을 참조하십시오.

Required: No

Type: String

업데이트 필요 조건: 대체

Volumes

컨테이너 정의에서 사용할 수 있는 볼륨의 볼륨 정의 목록(JSON 형식)입니다.

Required: No

유형: Amazon Elastic Container Service TaskDefinition Volumes의 목록

업데이트 필요 조건: 대체

반환 값

Ref

Ref 내장 함수에 이 리소스의 Logical ID를 입력하면 Ref는 Amazon 리소스 이름(ARN)을 반환합니다.

다음 예에서 Ref 함수는 MyTaskDefinition 작업의 ARN(예: arn:aws:ecs:us-west-2:123456789012:task/1abf0f6d-a411-4033-b8eb-a4eed3ad252a)을 반환합니다.

{ "Ref": "MyTaskDefinition" }

Ref 함수를 사용하는 방법에 대한 자세한 내용은 Ref를 참조하십시오.

예제

다음 예에서는 컨테이너 정의 2개와 볼륨 정의 1개가 포함된 Amazon ECS 작업 정의를 정의합니다.

JSON

"taskdefinition": { "Type": "AWS::ECS::TaskDefinition", "Properties" : { "ContainerDefinitions" : [ { "Name": {"Ref": "AppName"}, "MountPoints": [ { "SourceVolume": "my-vol", "ContainerPath": "/var/www/my-vol" } ], "Image":"amazon/amazon-ecs-sample", "Cpu": "10", "PortMappings":[ { "ContainerPort": {"Ref":"AppContainerPort"}, "HostPort": {"Ref":"AppHostPort"} } ], "EntryPoint": [ "/usr/sbin/apache2", "-D", "FOREGROUND" ], "Memory":"500", "Essential": "true" }, { "Name": "busybox", "Image": "busybox", "Cpu": "10", "EntryPoint": [ "sh", "-c" ], "Memory": "500", "Command": [ "/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\"" ], "Essential" : "false", "VolumesFrom": [ { "SourceContainer": {"Ref":"AppName"} } ] }], "Volumes": [ { "Host": { "SourcePath": "/var/lib/docker/vfs/dir/" }, "Name": "my-vol" }] } }

YAML

taskdefinition: Type: AWS::ECS::TaskDefinition Properties: ContainerDefinitions: - Name: Ref: "AppName" MountPoints: - SourceVolume: "my-vol" ContainerPath: "/var/www/my-vol" Image: "amazon/amazon-ecs-sample" Cpu: "10" PortMappings: - ContainerPort: Ref: "AppContainerPort" HostPort: Ref: "AppHostPort" EntryPoint: - "/usr/sbin/apache2" - "-D" - "FOREGROUND" Memory: "500" Essential: "true" - Name: "busybox" Image: "busybox" Cpu: "10" EntryPoint: - "sh" - "-c" Memory: "500" Command: - "/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\"" Essential: "false" VolumesFrom: - SourceContainer: Ref: "AppName" Volumes: - Host: SourcePath: "/var/lib/docker/vfs/dir/" Name: "my-vol"

다음 예에서는 필수 호환성으로 EC2FARGATE를 지정하는 Amazon ECS 작업 정의를 정의합니다.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "taskdefinition": { "Type": "AWS::ECS::TaskDefinition", "Properties": { "RequiresCompatibilities": [ "EC2", "FARGATE" ], "ContainerDefinitions": [ { "Name": "my-app", "MountPoints": [ { "SourceVolume": "my-vol", "ContainerPath": "/var/www/my-vol" } ], "Image": "amazon/amazon-ecs-sample", "Cpu": "10", "EntryPoint": [ "/usr/sbin/apache2", "-D", "FOREGROUND" ], "Memory": "500", "Essential": "true" }, { "Name": "busybox", "Image": "busybox", "Cpu": "10", "EntryPoint": [ "sh", "-c" ], "Memory": "500", "Command": [ "/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\"" ], "Essential": "false", "VolumesFrom": [ { "SourceContainer": "my-app" } ] } ], "Volumes": [ { "Host": { "SourcePath": "/var/lib/docker/vfs/dir/" }, "Name": "my-vol" } ] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Resources: taskdefinition: Type: AWS::ECS::TaskDefinition Properties: RequiresCompatibilities: - "EC2" - "FARGATE" ContainerDefinitions: - Name: "my-app" MountPoints: - SourceVolume: "my-vol" ContainerPath: "/var/www/my-vol" Image: "amazon/amazon-ecs-sample" Cpu: "10" EntryPoint: - "/usr/sbin/apache2" - "-D" - "FOREGROUND" Memory: "500" Essential: "true" - Name: "busybox" Image: "busybox" Cpu: "10" EntryPoint: - "sh" - "-c" Memory: "500" Command: - "/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\"" Essential: "false" VolumesFrom: - SourceContainer: "my-app" Volumes: - Host: SourcePath: "/var/lib/docker/vfs/dir/" Name: "my-vol"

참고 항목

Amazon ECS 클러스터 및 서비스를 생성하는 방법을 보여주는 전체 샘플 템플릿을 보려면 Amazon Elastic Container Service 템플릿 코드 조각 단원을 참조하십시오.