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

AWS::ECS::TaskDefinition

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

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

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

YAML

Copy
Type: "AWS::ECS::TaskDefinition" Properties: Volumes: - Volume Definition Family: String NetworkMode: String PlacementConstraints: - TaskDefinitionPlacementConstraint TaskRoleArn: String ContainerDefinitions: - Container Definition

プロパティ

Volumes

コンテナ定義で使用可能なボリュームの JSON 形式のボリューム定義のリスト。

Required: No

: Amazon EC2 Container Service TaskDefinition Volumes のリスト

更新に伴う要件: 置換

Family

このタスク定義が登録されたファミリーの名前。ファミリーはタスク定義の複数のバージョンをグループ化します。Amazon ECS は、ファミリーに登録した最初のタスク定義にリビジョン番号 1 を付与します。Amazon ECS は、追加された各タスク定義に順番にリビジョン番号を付与していきます。

注記

タスク定義を更新するときにリビジョン番号を使用するには、このプロパティを指定します。値を指定しない場合、更新するたびに AWS CloudFormation によって新しいタスク定義が生成されます。

Required: No

Type: String

更新に伴う要件: 置換

NetworkMode

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

Required: No

Type: String

更新に伴う要件: 置換

TaskRoleArn

ユーザーに代わってタスク内のコンテナに AWS API を 呼び出す許可を与える AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN)。詳細については、Amazon EC2 Container Service Developer Guide の「タスク用の IAM ロール」を参照してください。

Required: No

Type: String

更新に伴う要件: 置換

PlacementConstraints

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

Required: No

Type: Amazon EC2 Container Service Service PlacementConstraint

更新に伴う要件: 置換

ContainerDefinitions

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

Required: Yes

: Amazon EC2 Container Service TaskDefinition ContainerDefinitions のリスト

更新に伴う要件: 置換

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref により Amazon リソースネーム (ARN) が返されます。

次のサンプルでは、Ref 関数が MyTaskDefinition タスクの ARN (arn:aws:ecs:us-west-2:123456789012:task/1abf0f6d-a411-4033-b8eb-a4eed3ad252a など) を返します。

Copy
{ "Ref": "MyTaskDefinition" }

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

次の例では、コンテナ定義 2 つとボリューム定義 1 つを含む Amazon ECS タスク定義を定義します。

JSON

Copy
"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

Copy
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"

詳細

Amazon ECS クラスターおよびサービスを作成する方法を示す詳細なサンプルテンプレートについては、「Amazon EC2 Container Service テンプレートスニペット」を参照してください。

このページの内容: