

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

您可以使用 Amazon ECS 動作來部署 Amazon ECS 服務和任務集。Amazon ECS 服務是部署到 Amazon ECS 叢集的容器應用程式。Amazon ECS 叢集是在雲端託管容器應用程式的執行個體集合。部署需要您在 Amazon ECS 中建立的任務定義，以及 CodePipeline 用來部署映像的映像定義檔案。

**重要**  
CodePipeline 的 Amazon ECS 標準部署動作會根據 Amazon ECS 服務所使用的修訂來建立任務定義的專屬修訂。如果您為任務定義建立新的修訂，但未更新 Amazon ECS 服務，部署動作會忽略這些修訂。

建立管道之前，您必須已建立 Amazon ECS 資源、在映像儲存庫中標記並存放映像，並將 BuildSpec 檔案上傳到您的檔案儲存庫。

**注意**  
此參考主題說明 CodePipeline 的 Amazon ECS 標準部署動作。如需 CodePipeline 中 Amazon ECS 至 CodeDeploy 藍/綠部署動作的參考資訊，請參閱 [Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考](action-reference-ECSbluegreen.md)。

**Topics**
+ [動作類型](#action-reference-ECS-type)
+ [組態參數](#action-reference-ECS-config)
+ [Input artifacts (輸入成品)](#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 標準部署。如需詳細資訊，請參閱[Input artifacts (輸入成品)](#action-reference-ECS-input)及[Amazon ECS 標準部署動作的 imagedefinitions.json 檔案](file-reference.md#pipelines-create-image-definitions)。

**DeploymentTimeout**  
必要：否  
Amazon ECS 部署動作會在幾分鐘內逾時。逾時值可設定為不超過此動作的預設逾時值上限。例如：  

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

## Input artifacts (輸入成品)
<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>

以下相關資源可協助您使用此動作。
+ 如需示範如何使用 ECRBuildandPublish 動作推送映像，然後使用 ECS 標準動作部署至 Amazon ECS [教學課程：使用 CodePipeline (V2 類型） 建置 Docker 映像並將其推送至 Amazon ECR](tutorials-ecr-build-publish.md)的教學課程，請參閱 。
+ [教學課程：使用 CodePipeline 持續部署](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html) – 本教學課程說明如何建立存放在 CodeCommit 等來源檔案儲存庫中的 Dockerfile。接下來，本教學課程會示範如何整合 CodeBuild BuildSpec 檔案，該檔案會建置 Docker 映像並將其推送至 Amazon ECR，並建立您的 imagedefinitions.json 檔案。最後，您建立 Amazon ECS 服務和任務定義，然後使用 Amazon ECS 部署動作建立管道。
**注意**  
本主題和教學課程說明 CodePipeline 的 Amazon ECS 標準部署動作。如需 CodePipeline 中 Amazon ECS 到 CodeDeploy 藍/綠部署動作的相關資訊，請參閱 [教學課程：使用 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/)