

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Elastic Container Service 部署操作参考
<a name="action-reference-ECS"></a>

您可以使用 Amazon ECS 操作来部署 Amazon ECS 服务和任务集。Amazon ECS 服务是部署到 Amazon ECS 集群的容器应用程序。Amazon ECS 集群是在云中托管容器应用程序的实例集。部署需要您在 Amazon ECS 中创建的任务定义和 CodePipeline 用于部署映像的图像定义文件。

**重要**  
Amazon ECS 的标准部署操作会根据 Amazon ECS 服务使用的修订版 CodePipeline 创建自己的任务定义修订版。如果您在不更新 Amazon ECS 服务的情况下为任务定义创建新的修订，则部署操作将忽略这些修订。

在创建管道之前，您必须已经创建 Amazon ECS 资源，在映像存储库中标记并存储了映像，并将 BuildSpec 文件上传到您的文件存储库。

**注意**  
本参考主题介绍了 Amazon ECS 的标准部署操作 CodePipeline。有关中 Amazon ECS 到 CodeDeploy 蓝/绿部署操作的参考信息 CodePipeline，请参阅。[Amazon 弹性容器服务和 CodeDeploy 蓝绿色部署操作参考](action-reference-ECSbluegreen.md)

**Topics**
+ [操作类型](#action-reference-ECS-type)
+ [配置参数](#action-reference-ECS-config)
+ [输入构件](#action-reference-ECS-input)
+ [输出构件](#action-reference-ECS-output)
+ [服务角色权限：Amazon ECS 标准操作](#edit-role-ecs)
+ [操作声明](#action-reference-ECS-example)
+ [另请参阅](#action-reference-ECS-links)

## 操作类型
<a name="action-reference-ECS-type"></a>
+ 类别：`Deploy`
+ 拥有者：`AWS`
+ 提供方：`ECS`
+ 版本：`1`

## 配置参数
<a name="action-reference-ECS-config"></a>

**ClusterName**  
是否必需：是  
Amazon ECS 中的 Amazon ECS 集群。

**ServiceName**  
是否必需：是  
您在 Amazon ECS 中创建的 Amazon ECS 服务。

**FileName**  
必需：否  
您的映像定义文件，该 JSON 描述服务的容器名称以及映像和标签。您需要将此文件用于 ECS 标准部署。有关更多信息，请参阅[输入构件](#action-reference-ECS-input)和[适用于 Amazon ECS 标准部署操作的 imagedefinitions.json 文件](file-reference.md#pipelines-create-image-definitions)。

**DeploymentTimeout**  
必需：否  
Amazon ECS 部署操作超时（以分钟为单位）。该超时可配置为此操作的最大默认超时。例如：  

```
"DeploymentTimeout": "15"
```

## 输入构件
<a name="action-reference-ECS-input"></a>
+ **构件数：**`1`
+ **描述：**该操作会在管道的源文件存储库中查找 `imagedefinitions.json` 文件。图像定义文档是一个 JSON 文件，用于描述您的 Amazon ECS 容器名称以及图像和标签。 CodePipeline 使用该文件从您的图像存储库（例如 Amazon ECR）中检索图像。在未自动执行操作的情况下，您可以为管道手动添加 `imagedefinitions.json` 文件。有关 `imagedefinitions.json` 文件的信息，请参阅[适用于 Amazon ECS 标准部署操作的 imagedefinitions.json 文件](file-reference.md#pipelines-create-image-definitions)。

  操作需要已推送到您的映像存储库的现有映像。由于映像映射由 `imagedefinitions.json` 文件提供，因此操作不要求包含 Amazon ECR 源以作为管道中的源操作。

## 输出构件
<a name="action-reference-ECS-output"></a>
+ **构件数：**`0`
+ **描述：**输出构件不适用于此操作类型。

## 服务角色权限：Amazon ECS 标准操作
<a name="edit-role-ecs"></a>

对于 Amazon ECS，以下是创建具有 Amazon ECS 部署操作的管道所需的最低权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TaskDefinitionPermissions",
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeTaskDefinition",
                "ecs:RegisterTaskDefinition"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "ECSServicePermissions",
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeServices",
                "ecs:UpdateService"
            ],
            "Resource": [
                "arn:aws:ecs:*:111122223333:service/[[clusters]]/*"
            ]
        },
        {
            "Sid": "ECSTagResource",
            "Effect": "Allow",
            "Action": [
                "ecs:TagResource"
            ],
            "Resource": [
                "arn:aws:ecs:*:111122223333:task-definition/[[taskDefinitions]]:*"
            ],
            "Condition": {
                "StringEquals": {
                    "ecs:CreateAction": [
                        "RegisterTaskDefinition"
                    ]
                }
            }
        },
        {
            "Sid": "IamPassRolePermissions",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/[[passRoles]]"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ecs.amazonaws.com",
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

您可以选择加入以使用 Amazon ECS 中的标记授权。选择加入后，您必须授予以下权限：`ecs:TagResource`。有关如何选择加入以及如何确定是否需要权限和是否强制执行标记授权的更多信息，请参阅《Amazon Elastic Container Service 开发者指南》中的[标记授权时间表](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources-timeline)。

您必须添加 `iam:PassRole` 权限以使用 IAM 角色执行任务。有关更多信息，请参阅 [Amazon ECS 任务执行 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)和[任务 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。使用以下策略文本。

## 操作声明
<a name="action-reference-ECS-example"></a>

------
#### [ YAML ]

```
Name: DeployECS
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: ECS
  Version: '1'
RunOrder: 2
Configuration:
  ClusterName: my-ecs-cluster
  ServiceName: sample-app-service
  FileName: imagedefinitions.json
  DeploymentTimeout: '15'
OutputArtifacts: []
InputArtifacts:
  - Name: my-image
```

------
#### [ JSON ]

```
{
    "Name": "DeployECS",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "ECS",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ClusterName": "my-ecs-cluster",
        "ServiceName": "sample-app-service",
        "FileName": "imagedefinitions.json",
        "DeploymentTimeout": "15"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "my-image"
        }
    ]
},
```

------

## 另请参阅
<a name="action-reference-ECS-links"></a>

下列相关资源在您使用此操作的过程中会有所帮助。
+ [教程：使用 CodePipeline （V2 类型）构建 Docker 镜像并将其推送到亚马逊 ECR](tutorials-ecr-build-publish.md)有关如何使用 “ ECRBuildand发布” 操作推送映像，然后使用 ECS 标准操作部署到 Amazon ECS 的教程，请参阅。
+ [教程：使用持续部署 CodePipeline](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html) — 本教程向您展示如何创建存储在源文件存储库中的 Dockerfile，例如。 CodeCommit接下来，本教程将向您展示如何合并一个 CodeBuild BuildSpec 文件，该文件用于生成您的 Docker 映像并将其推送到 Amazon ECR，并创建 imagedefinitions.json 文件。最后，您将创建 Amazon ECS 服务和任务定义，然后创建具有 Amazon ECS 部署操作的管道。
**注意**  
本主题和教程介绍了 Amazon ECS 的标准部署操作 CodePipeline。有关中 Amazon ECS 到 CodeDeploy 蓝/绿部署操作的信息 CodePipeline，请参阅。[教程：使用 Amazon ECR 源和 ECS-to-CodeDeploy部署创建管道](tutorials-ecs-ecr-codedeploy.md)
+ *Amazon Elastic Container Service 开发者指南*：有关使用 Docker 映像和容器、Amazon ECS 服务和集群以及 Amazon ECS 任务集的信息，请参阅[什么是 Amazon ECS？](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)