AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::ECS::TaskDefinition

AWS::ECS::TaskDefinition 资源描述了 Amazon Elastic Container Service (Amazon ECS) 任务的容器和卷定义。您可以指定要使用的 Docker 映像、所需的资源以及与通过 Amazon ECS 服务或任务启动任务定义相关的其他配置。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

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

YAML

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

属性

Volumes

采用 JSON 格式的卷定义的列表,这些定义针对您可以在容器定义中使用的卷。

Required: No

类型Amazon Elastic Container Service TaskDefinition 卷 的列表

更新要求替换

Family

此任务定义注册到的系列的名称。系列 对多个版本的任务定义进行分组。Amazon ECS 为您注册到系列的第一个任务定义指定修订号 1。Amazon ECS 为添加的每个任务定义指定按顺序排列的修订号。

注意

要在更新任务定义时使用修订号,请指定此属性。如果不指定值,AWS CloudFormation 会在每次更新时生成新的任务定义。

Required: No

Type: String

更新要求替换

NetworkMode

容器在任务中使用的 Docker 联网模式,例如 nonebridgehost。有关网络模式的信息,请参阅 Amazon Elastic Container Service Developer Guide任务定义参数主题下的 NetworkMode

Required: No

Type: String

更新要求替换

TaskRoleArn

AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称 (ARN),该角色向任务中的容器授予代表您调用 AWS API 的权限。有关更多信息,请参阅 Amazon Elastic Container Service Developer Guide 中的适用于任务的 IAM 角色

Required: No

Type: String

更新要求替换

PlacementConstraints

服务中任务的放置约束。

Required: No

Type: Amazon Elastic Container Service Service PlacementConstraint

更新要求替换

ContainerDefinitions

采用 JSON 格式的容器定义的列表,这些定义描述组成您的任务的容器。

Required: Yes

类型Amazon Elastic Container Service TaskDefinition ContainerDefinitions 的列表

更新要求替换

返回值

Ref

当此资源的逻辑 ID 提供给 Ref 内部函数时,Ref 将返回 Amazon 资源名称 (ARN)。

在下面的示例中,Ref 函数返回 MyTaskDefinition 任务的 ARN,如 arn:aws:ecs:us-west-2:123456789012:task/1abf0f6d-a411-4033-b8eb-a4eed3ad252a

{ "Ref": "MyTaskDefinition" }

有关使用 Ref 功能的更多信息,请参阅参考

示例

下面的示例定义一个 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"

更多信息

有关显示创建 Amazon ECS 群集和服务的方式的完整示例和模板,请参阅 Amazon Elastic Container Service 模板代码段