メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::ECS::TaskDefinition

AWS::ECS::TaskDefinition リソースは、Amazon Elastic Container Service (Amazon ECS) タスクのコンテナとボリュームの定義を記述します。Amazon ECS サービスまたはタスクを通じて、使用する Docker イメージ、必要なリソース、タスク定義の開始に関連する他の設定を指定できます。

構文

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

プロパティ

プロパティと有効なパラメーターの詳細については、『Amazon Elastic Container Service API Reference』の「RegisterTaskDefinition」を参照してください。

ContainerDefinitions

タスクを構成するコンテナを記述する JSON 形式のコンテナ定義のリスト。

Required: Yes

: Amazon Elastic Container Service TaskDefinition ContainerDefinition のリスト

更新に伴う要件: 置換

Cpu

タスクで使用されている cpu ユニットの数。EC2 起動タイプを使用している場合、このフィールドはオプションであり、任意の値を使用できます。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 ~ 16GB (1GB のインクリメント)

  • 4096 (4 vCPU) - 使用可能な memory 値: 8GB ~ 30GB (1GB のインクリメント)

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 ~ 16GB (1GB のインクリメント) - 使用可能な cpu 値: 2048 (2 vCPU)

  • 8GB ~ 30GB (1GB のインクリメント) - 使用可能な cpu 値: 4096 (4 vCPU)

Required: No

Type: String

更新に伴う要件: 置換

NetworkMode

タスクのコンテナで使用する Docker ネットワーキングモード (nonebridgehost など)。ネットワークモードの詳細については、Amazon Elastic Container Service Developer Guideの「タスク定義パラメータ」の「NetworkMode」を参照してください。

Fargate 起動タイプの場合、awsvpc のみ指定できます。Fargate 起動タイプでは、nonebridge、または host オプションは機能しません。

Required: No

Type: String

更新に伴う要件: 置換

PlacementConstraints

サービス内のタスクの配置制約。

Required: No

Type: Amazon Elastic Container Service Service PlacementConstraint

更新に伴う要件: 置換

RequiresCompatibilities

タスクに必要な起動タイプ。値を指定しない場合、デフォルト値は EC2 です。有効な値は、EC2 および FARGATE です。

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 のリスト

更新に伴う要件: 置換

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、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 テンプレートスニペット」を参照してください。