

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

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

# 使用工作流程部署至 Amazon ECS
部署至 Amazon ECS

本節說明如何使用 CodeCatalyst 工作流程將容器化應用程式部署至 Amazon Elastic Container Service 叢集。若要達成此目的，您必須將**部署至 Amazon ECS** 動作新增至工作流程。此動作會註冊您提供[的任務定義](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-task-definitions)檔案。註冊時，任務定義會由 [Amazon ECS 叢集中執行的 Amazon ECS 服務](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)執行個體化。 [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-clusters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-clusters)「建立任務定義」等同於將應用程式部署到 Amazon ECS。

若要使用此動作，您必須備妥 Amazon ECS 叢集、服務和任務定義檔案。

如需 Amazon ECS 的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》。

**提示**  
如需說明如何使用**部署至 Amazon ECS **動作的教學課程，請參閱 [教學課程：將應用程式部署至 Amazon ECS](deploy-tut-ecs.md)。

**提示**  
如需**部署至 Amazon ECS** 動作的工作範例，請使用 **Node.js API 搭配 AWS Fargate** 或 **Java API 搭配 AWS Fargate**藍圖來建立專案。如需詳細資訊，請參閱[使用藍圖建立專案](projects-create.md#projects-create-console-template)。

**Topics**
+ [

## 「部署至 Amazon ECS」動作所使用的執行期映像
](#deploy-action-ecs-runtime)
+ [

# 教學課程：將應用程式部署至 Amazon ECS
](deploy-tut-ecs.md)
+ [

# 將 'Deploy 新增至 Amazon ECS' 動作
](deploy-action-ecs-adding.md)
+ [

# 「部署到 Amazon ECS」變數
](deploy-action-ecs-variables.md)
+ [

# 「部署到 Amazon ECS」動作 YAML
](deploy-action-ref-ecs.md)

## 「部署至 Amazon ECS」動作所使用的執行期映像


**部署至 Amazon ECS** 動作會在 [2022 年 11 月映像](build-images.md#build.previous-image)上執行。如需詳細資訊，請參閱[作用中映像](build-images.md#build-curated-images)。

# 教學課程：將應用程式部署至 Amazon ECS
教學課程：部署至 Amazon ECS已更新內容： [教學課程：將應用程式部署至 Amazon ECS](#deploy-tut-ecs)

已變更[步驟 1：設定 AWS 使用者和 AWS CloudShell](#deploy-tut-ecs-user-cloudshell)以描述如何在 中建立使用者， AWS IAM Identity Center 而不是在 中建立使用者 AWS Identity and Access Management。不再建議建立 IAM 使用者。

在本教學課程中，您將了解如何使用工作流程、Amazon ECS 和其他一些 AWS 服務，將無伺服器應用程式部署至 Amazon Elastic Container Service (Amazon ECS)。部署的應用程式是建置在 Apache Web 伺服器 Docker 映像上的簡單 Hello World 網站。本教學課程會逐步解說必要的準備工作，例如設定叢集，然後說明如何建立工作流程來建置和部署應用程式。

**提示**  
您可以使用藍圖，為您完成 Amazon ECS 設定，而不是透過本教學課程進行。您需要使用 **Node.js API 搭配 AWS Fargate** 或 **Java API 搭配 AWS Fargate**藍圖。如需詳細資訊，請參閱[使用藍圖建立專案](projects-create.md#projects-create-console-template)。

**Topics**
+ [

## 先決條件
](#deploy-tut-ecs-prereqs)
+ [

## 步驟 1：設定 AWS 使用者和 AWS CloudShell
](#deploy-tut-ecs-user-cloudshell)
+ [

## 步驟 2：將預留位置應用程式部署至 Amazon ECS
](#deploy-tut-ecs-placeholder)
+ [

## 步驟 3：建立 Amazon ECR 映像儲存庫
](#deploy-tut-ecs-ecr)
+ [

## 步驟 4：建立 AWS 角色
](#deploy-tut-ecs-build-deploy-roles)
+ [

## 步驟 5：將 AWS 角色新增至 CodeCatalyst
](#deploy-tut-ecs-import-roles)
+ [

## 步驟 6：建立來源儲存庫
](#deploy-tut-ecs-source-repo)
+ [

## 步驟 7：新增來源檔案
](#deploy-tut-ecs-source-files)
+ [

## 步驟 8：建立和執行工作流程
](#deploy-tut-ecs-workflow)
+ [

## 步驟 9：變更來源檔案
](#deploy-tut-ecs-change)
+ [

## 清除
](#deploy-tut-ecs-cleanup)

## 先決條件


開始之前：
+ 您需要具有連線 AWS 帳戶的 CodeCatalyst **空間**。如需詳細資訊，請參閱[建立空間](spaces-create.md)。
+ 在您的空間中，您需要一個名為 的空專案：

  ```
  codecatalyst-ecs-project
  ```

  使用**從頭開始**選項來建立此專案。

  如需詳細資訊，請參閱[在 Amazon CodeCatalyst 中建立空專案](projects-create.md#projects-create-empty)。
+ 在您的專案中，您需要名為 的 CodeCatalyst **環境**：

  ```
  codecatalyst-ecs-environment
  ```

  設定此環境，如下所示：
  + 選擇任何類型的，例如**非生產**。
  + 將您的帳戶連接到該 AWS 帳戶。
  + 針對**預設 IAM 角色**，選擇任何角色。稍後您將指定不同的角色。

  如需詳細資訊，請參閱[部署至 AWS 帳戶 和 VPCs](deploy-environments.md)。

## 步驟 1：設定 AWS 使用者和 AWS CloudShell
步驟 1：設定 AWS 使用者和 AWS CloudShell

本教學課程的第一步是在 中建立使用者 AWS IAM Identity Center，並以此使用者身分啟動 AWS CloudShell 執行個體。在本教學課程中，CloudShell 是您的開發電腦，也是您設定 AWS 資源和服務的地方。完成教學課程後刪除此使用者。

**注意**  
請勿將您的根使用者用於本教學課程。稍後在 AWS Command Line Interface (CLI) 中執行動作時，您必須建立個別的使用者，否則可能會遇到問題。

如需 IAM Identity Center 使用者和 CloudShell 的詳細資訊，請參閱 *AWS IAM Identity Center 使用者指南*和 *AWS CloudShell 使用者指南*。

**建立 IAM Identity Center 使用者**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/singlesignon/](https://console.aws.amazon.com/singlesignon/) 開啟 AWS IAM Identity Center 主控台。
**注意**  
請務必使用連線至 CodeCatalyst 空間 AWS 帳戶 的 登入。您可以透過導覽至您的空間並選擇 **AWS 帳戶索引標籤來驗證哪個帳戶**已連線。如需詳細資訊，請參閱[建立空間](spaces-create.md)。

1. 在導覽窗格中，選擇 **使用者**，然後選擇 **新增使用者**。

1. 在**使用者名稱**中，輸入：

   ```
   CodeCatalystECSUser
   ```

1. 在**密碼**下，選擇**產生您可以與此使用者共用的一次性密碼**。

1. 在**電子郵件地址**和**確認電子郵件地址**中，輸入 IAM Identity Center 中尚不存在的電子郵件地址。

1. 在**名字**和**姓氏**中，輸入：

   ```
   CodeCatalystECSUser
   ```

1. 在**顯示名稱**中，保留自動產生的名稱：

   ```
   CodeCatalystECSUser CodeCatalystECSUser
   ```

1. 選擇**下一步**。

1. 在**新增使用者至群組**頁面上，選擇**下一步**。

1. 在**檢閱和新增使用者**頁面上，檢閱資訊，然後選擇**新增使用者**。

   **一次性密碼**對話方塊隨即出現。

1. 選擇**複製**，然後貼上登入資訊，包括 AWS 存取入口網站 URL 和一次性密碼。

1. 選擇**關閉**。

**建立許可集合**

您將將此許可集指派給`CodeCatalystECSUser`稍後的 。

1. 在導覽窗格中，選擇**許可集**，然後選擇**建立許可集**。

1. 選擇**預先定義的許可集**，然後選取 **AdministratorAccess**。此政策為所有 提供完整許可 AWS 服務。

1. 選擇**下一步**。

1. 在**許可集名稱**中，輸入：

   ```
   CodeCatalystECSPermissionSet
   ```

1. 選擇**下一步**。

1. 在**檢閱和建立**頁面上，檢閱資訊，然後選擇**建立**。

**將許可集指派給 CodeCatalystECSUser**

1. 在導覽窗格中，選擇 **AWS 帳戶**，然後選取 AWS 帳戶 您目前登入之 旁的核取方塊。

1. 選擇**指派使用者或群組**。

1. 選擇**使用者**索引標籤。

1. 選取 旁的核取方塊`CodeCatalystECSUser`。

1. 選擇**下一步**。

1. 選取 旁的核取方塊`CodeCatalystECSPermissionSet`。

1. 選擇**下一步**。

1. 檢閱資訊，然後選擇**提交**。

   您現在已將 `CodeCatalystECSUser`和 `CodeCatalystECSPermissionSet` 指派給 AWS 帳戶，並將其繫結在一起。

**以 CodeCatalystECSUser 身分登出並重新登入**

1. 登出之前，請確定您擁有 AWS 存取入口網站 URL 以及 的使用者名稱和一次性密碼`CodeCatalystECSUser`。您應該稍早已將此資訊複製到文字編輯器。
**注意**  
如果您沒有此資訊，請前往 IAM Identity Center 的詳細資訊`CodeCatalystECSUser`頁面，選擇**重設密碼**、**產生一次性密碼 【...】** 和再次**重設密碼**，以在畫面上顯示資訊。

1. 登出 AWS。

1. 將 AWS 存取入口網站 URL 貼到瀏覽器的地址列。

1. 使用 的使用者名稱和一次性密碼登入`CodeCatalystECSUser`。

1. 在**新密碼**中，輸入密碼，然後選擇**設定新密碼**。

   畫面上會出現一個**AWS 帳戶**方塊。

1. 選擇 **AWS 帳戶**，然後選擇您 AWS 帳戶 為其指派`CodeCatalystECSUser`使用者和許可集的 名稱。

1. 在 旁`CodeCatalystECSPermissionSet`，選擇 **管理主控台**。

    AWS 管理主控台 隨即出現。您現在以`CodeCatalystECSUser`具有適當許可的 身分登入。

**啟動 AWS CloudShell 執行個體**

1. 作為 `CodeCatalystECSUser`，在頂端導覽列中，選擇 AWS 圖示 (![\[AWS icon\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/images/deploy/aws-logo.png))。

   隨即 AWS 管理主控台 顯示 的主頁面。

1. 在頂端導覽列中，選擇 AWS CloudShell 圖示 (![\[CloudShell icon\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/images/deploy/CloudShell.png))。

   CloudShell 隨即開啟。等待 CloudShell 環境建立。
**注意**  
如果您沒有看到 CloudShell 圖示，請確定您位於 [ CloudShell 支援的區域中](https://docs.aws.amazon.com/cloudshell/latest/userguide/faq-list.html#regions-available)。本教學假設您位於美國西部 （奧勒岡） 區域。

**驗證 AWS CLI 是否已安裝**

1. 在 CloudShell 終端機中，輸入：

   ```
   aws --version
   ```

1. 檢查版本是否出現。

    AWS CLI 已為目前使用者 設定 `CodeCatalystECSUser`，因此不需要設定 AWS CLI 金鑰和登入資料，通常也是如此。

## 步驟 2：將預留位置應用程式部署至 Amazon ECS
步驟 2：將預留位置應用程式部署至 Amazon ECS

在本節中，您將手動將預留位置應用程式部署至 Amazon ECS。此預留位置應用程式將由工作流程部署的 Hello World 應用程式取代。預留位置應用程式為 Apache Web Server。

如需 Amazon ECS 的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》。

完成下列一系列程序以部署預留位置應用程式。<a name="deploy-tut-ecs-create-task-execution-role"></a>

**建立任務執行角色**

此角色會授予 Amazon ECS 和代表您進行 API 呼叫的 AWS Fargate 許可。

1. 建立信任政策：

   1. 在 中 AWS CloudShell，輸入下列命令：

      ```
      cat > codecatalyst-ecs-trust-policy.json
      ```

      CloudShell 終端機中會出現閃爍提示。

   1. 在提示中輸入下列程式碼：

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
              "Service": "ecs-tasks.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

------

   1. 將游標放在最後一個大括號 () 之後`}`。

   1. 按 **Enter** ，然後按 **Ctrl\$1d** 儲存檔案並退出貓。

1. 建立任務執行角色：

   ```
   aws iam create-role \
         --role-name codecatalyst-ecs-task-execution-role \
         --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
   ```

1. 將 AWS 受管`AmazonECSTaskExecutionRolePolicy`政策連接至角色：

   ```
   aws iam attach-role-policy \
         --role-name codecatalyst-ecs-task-execution-role \
         --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
   ```

1. 顯示角色的詳細資訊：

   ```
   aws iam get-role \
         --role-name codecatalyst-ecs-task-execution-role
   ```

1. 請記下角色`"Arn":`的值，例如 `arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role`。稍後您將需要此 Amazon Resource Name (ARN)。

**建立 Amazon ECS 叢集**

此叢集將包含 Apache 預留位置應用程式，以及稍後的 Hello World 應用程式。

1. 作為 `CodeCatalystECSUser`，在 中 AWS CloudShell建立空叢集：

   ```
   aws ecs create-cluster --cluster-name codecatalyst-ecs-cluster
   ```

1. （選用） 確認叢集已成功建立：

   ```
   aws ecs list-clusters
   ```

   `codecatalyst-ecs-cluster` 叢集的 ARN 應該會出現在清單中，表示成功建立。

**建立任務定義檔案**

任務定義檔案指出 要執行從 DockerHub 提取的 [Apache 2.4 Web 伺服器](https://hub.docker.com/_/httpd) Docker 映像 (`httpd:2.4`)。 DockerHub

1. 作為 `CodeCatalystECSUser`，在 中 AWS CloudShell建立任務定義檔案：

   ```
   cat > taskdef.json
   ```

1. 在提示中貼上下列程式碼：

   ```
   {
       "executionRoleArn": "arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role",
       "containerDefinitions": [
           {
               "name": "codecatalyst-ecs-container",
               "image": "httpd:2.4",
               "essential": true,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "cpu": "256",
       "family": "codecatalyst-ecs-task-def",
       "memory": "512",
       "networkMode": "awsvpc"
   }
   ```

   在上述程式碼中，取代 *arn：aws：iam：：111122223333：role/codecatalyst-ecs-task-execution-role*

   使用您在 中記下之任務執行角色的 ARN[建立任務執行角色](#deploy-tut-ecs-create-task-execution-role)。

1. 將游標放在最後一個大括號 () 之後`}`。

1. 按 **Enter** ，然後按 **Ctrl\$1d** 儲存檔案並退出貓。

**向 Amazon ECS 註冊任務定義檔案**

1. 作為 `CodeCatalystECSUser`，在 中 AWS CloudShell註冊任務定義：

   ```
   aws ecs register-task-definition \
       --cli-input-json file://taskdef.json
   ```

1. （選用） 確認任務定義已註冊：

   ```
   aws ecs list-task-definitions
   ```

   `codecatalyst-ecs-task-def` 任務定義應該會出現在清單中。

**建立 Amazon ECS 服務**

Amazon ECS 服務會執行 Apache 預留位置應用程式的任務 （和相關聯的 Docker 容器），以及稍後的 Hello World 應用程式。

1. 身為 `CodeCatalystECSUser`，如果您尚未這麼做，請切換到 Amazon Elastic Container Service 主控台。

1. 選擇您先前建立的叢集 `codecatalyst-ecs-cluster`。

1. 在**服務**索引標籤中，選擇**建立**。

1. 在**建立**頁面中，執行下列動作：

   1. 保留所有預設設定，但接下來列出的設定除外。

   1. 針對 **Launch type (啟動類型)**，選擇 **FARGATE**。

   1. 在**任務定義**下，於**系列**下拉式清單中，選擇：

      `codecatalyst-ecs-task-def`

   1. 針對**服務名稱**，輸入：

      ```
      codecatalyst-ecs-service
      ```

   1. 針對**所需的任務**，輸入：

      ```
      3
      ```

      在本教學課程中，每個任務都會啟動單一 Docker 容器。

   1. 展開**聯網**區段。

   1. 對於 **VPC**，請選擇任何 VPC。

   1. 針對**子網路**，選擇任何子網路。
**注意**  
僅指定一個子網路。這就是本教學課程所需的一切。
**注意**  
如果您沒有 VPC 和子網路，請建立它們。請參閱《Amazon [VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC) 使用者指南》中的建立 VPC 和[在您的 VPC 中建立子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。 **

   1. 針對**安全群組**，選擇**建立新的安全群組**，然後執行下列動作：

      1. 針對**安全群組名稱**，輸入：

         ```
         codecatalyst-ecs-security-group
         ```

      1. 針對**安全群組描述**，輸入：

         ```
         CodeCatalyst ECS security group
         ```

      1. 選擇**新增規則**。針對**類型**，選擇 **HTTP**，針對**來源**，選擇 **Anywhere**。

   1. 在底部，選擇**建立**。

   1. 等待服務建立。這可能需要幾分鐘的時間。

1. 選擇**任務**索引標籤，然後選擇重新整理按鈕。確認這三個任務的**上次狀態**欄都設定為**執行**中。

**（選用） 驗證您的 Apache 預留位置應用程式是否正在執行**

1. 在**任務**索引標籤中，選擇三個任務中的任一個。

1. 在**公有 IP** 欄位中，選擇**開啟的地址**。

   `It Works!` 頁面隨即出現。這表示 Amazon ECS 服務已成功啟動使用 Apache 映像啟動 Docker 容器的任務。

   在教學課程中的這個階段，您已手動部署 Amazon ECS 叢集、服務和任務定義，以及 Apache 預留位置應用程式。所有這些項目都就緒後，您現在可以建立工作流程，以教學課程的 Hello World 應用程式取代 Apache 預留位置應用程式。

## 步驟 3：建立 Amazon ECR 映像儲存庫
步驟 3：建立 Amazon ECR 映像儲存庫

在本節中，您會在 Amazon Elastic Container Registry (Amazon ECR) 中建立私有映像儲存庫。此儲存庫會存放教學課程的 Docker 映像，以取代您先前部署的 Apache 預留位置映像。

如需 Amazon ECR 的詳細資訊，請參閱《*Amazon Elastic Container Registry 使用者指南*》。

**在 Amazon ECR 中建立映像儲存庫**

1. 作為 `CodeCatalystECSUser`，在 中 AWS CloudShell，在 Amazon ECR 中建立空儲存庫：

   ```
   aws ecr create-repository --repository-name codecatalyst-ecs-image-repo
   ```

1. 顯示 Amazon ECR 儲存庫的詳細資訊：

   ```
   aws ecr describe-repositories \
         --repository-names codecatalyst-ecs-image-repo
   ```

1. 請記下 `“repositoryUri”:`值，例如 `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo`。

   稍後在將儲存庫新增至工作流程時需要它。

## 步驟 4：建立 AWS 角色
步驟 4：建立建置和部署角色

在本節中，您會建立 CodeCatalyst AWS 工作流程運作所需的 IAM 角色。這些角色包括：
+ **組建角色** – 授予 CodeCatalyst 組建動作 （在工作流程中） 存取 AWS 您的帳戶和寫入 Amazon ECR 和 Amazon EC2 的許可。
+ **部署角色** – 授予 CodeCatalyst **部署到 ECS** 動作 （在工作流程中） 存取 AWS 您的帳戶、Amazon ECS 和其他一些 AWS 服務的許可。

如需 IAM 角色的詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

**注意**  
若要節省時間，您可以建立稱為角色的單一`CodeCatalystWorkflowDevelopmentRole-spaceName`角色，而不是先前列出的兩個角色。如需詳細資訊，請參閱[為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有非常廣泛的許可，這可能會構成安全風險。我們建議您只在安全性較少的教學課程和案例中使用此角色。本教學假設您正在建立先前列出的兩個角色。

若要建立建置和部署角色，您可以使用 AWS 管理主控台 或 AWS CLI。

------
#### [ AWS 管理主控台 ]

若要建立建置和部署角色，請完成下列一系列程序。

**建立建置角色**

1. 建立角色的政策，如下所示：

   1. 登入 AWS。

   1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 在導覽窗格中，選擇**政策**。

   1. 選擇 **Create policy** (建立政策)。

   1. 請選擇 **JSON** 標籤。

   1. 刪除現有的程式碼。

   1. 貼上以下程式碼：

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecr:*",
                      "ec2:*"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
**注意**  
第一次使用該角色執行工作流程動作時，請在資源政策陳述式中使用萬用字元，然後在資源名稱可用之後縮小政策的範圍。  

      ```
      "Resource": "*"
      ```

   1. 選擇下**一步：標籤**。

   1. 選擇下**一步：檢閱**。

   1. 在**名稱**中，輸入：

      ```
      codecatalyst-ecs-build-policy
      ```

   1. 選擇**建立政策**。

      您現在已建立許可政策。

1. 建立建置角色，如下所示：

   1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 選擇**自訂信任政策**。

   1. 刪除現有的自訂信任政策。

   1. 新增下列自訂信任政策：

   1. 選擇**下一步**。

   1. 在**許可政策**中，搜尋 `codecatalyst-ecs-build-policy`，選取其核取方塊。

   1. 選擇**下一步**。

   1. 針對**角色名稱**，輸入：

      ```
      codecatalyst-ecs-build-role
      ```

   1. 針對**角色描述**，輸入：

      ```
      CodeCatalyst ECS build role
      ```

   1. 選擇建**立角色**。

   您現在已建立具有許可政策和信任政策的建置角色。

1. 取得建置角色 ARN，如下所示：

   1. 在導覽窗格中，選擇**角色**。

   1. 在搜尋方塊中，輸入您剛建立的角色名稱 (`codecatalyst-ecs-build-role`)。

   1. 從清單中選擇角色。

      角色的**摘要**頁面隨即出現。

   1. 在頂端複製 **ARN** 值。供稍後使用。

**建立部署角色**

1. 建立角色的政策，如下所示：

   1. 登入 AWS。

   1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 在導覽窗格中，選擇**政策**。

   1. 選擇**建立政策**。

   1. 請選擇 **JSON** 標籤。

   1. 刪除現有的程式碼。

   1. 貼上以下程式碼：

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [{
          "Action":[
            "ecs:DescribeServices",
            "ecs:CreateTaskSet",
            "ecs:DeleteTaskSet",
            "ecs:ListClusters",
            "ecs:RegisterTaskDefinition",
            "ecs:UpdateServicePrimaryTaskSet",
            "ecs:UpdateService",
            "elasticloadbalancing:DescribeTargetGroups",
            "elasticloadbalancing:DescribeListeners",
            "elasticloadbalancing:ModifyListener",
            "elasticloadbalancing:DescribeRules",
            "elasticloadbalancing:ModifyRule",
            "lambda:InvokeFunction",
            "lambda:ListFunctions",
            "cloudwatch:DescribeAlarms",
            "sns:Publish",
            "sns:ListTopics", 
            "s3:GetObject",
            "s3:GetObjectVersion",
            "codedeploy:CreateApplication", 
            "codedeploy:CreateDeployment", 
            "codedeploy:CreateDeploymentGroup", 
            "codedeploy:GetApplication", 
            "codedeploy:GetDeployment", 
            "codedeploy:GetDeploymentGroup", 
            "codedeploy:ListApplications", 
            "codedeploy:ListDeploymentGroups", 
            "codedeploy:ListDeployments", 
            "codedeploy:StopDeployment", 
            "codedeploy:GetDeploymentTarget", 
            "codedeploy:ListDeploymentTargets", 
            "codedeploy:GetDeploymentConfig", 
            "codedeploy:GetApplicationRevision", 
            "codedeploy:RegisterApplicationRevision", 
            "codedeploy:BatchGetApplicationRevisions", 
            "codedeploy:BatchGetDeploymentGroups", 
            "codedeploy:BatchGetDeployments", 
            "codedeploy:BatchGetApplications", 
            "codedeploy:ListApplicationRevisions", 
            "codedeploy:ListDeploymentConfigs", 
            "codedeploy:ContinueDeployment"           
         ],
         "Resource":"*",
         "Effect":"Allow"
      },{"Action":[
            "iam:PassRole"
         ],
         "Effect":"Allow",
         "Resource":"*",
         "Condition":{"StringLike":{"iam:PassedToService":[
                  "ecs-tasks.amazonaws.com",
                  "codedeploy.amazonaws.com"
               ]
            }
         }
      }]
      }
      ```

------
**注意**  
第一次使用該角色執行工作流程動作時，請在資源政策陳述式中使用萬用字元。之後，您可以使用資源名稱縮小政策的範圍。  

      ```
      "Resource": "*"
      ```

   1. 選擇下**一步：標籤**。

   1. 選擇下**一步：檢閱**。

   1. 在**名稱**中，輸入：

      ```
      codecatalyst-ecs-deploy-policy
      ```

   1. 選擇**建立政策**。

      您現在已建立許可政策。

1. 建立部署角色，如下所示：

   1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 選擇**自訂信任政策**。

   1. 刪除現有的自訂信任政策。

   1. 新增下列自訂信任政策：

   1. 選擇**下一步**。

   1. 在**許可政策**中，搜尋 `codecatalyst-ecs-deploy-policy`，選取其核取方塊。

   1. 選擇**下一步**。

   1. 針對**角色名稱**，輸入：

      ```
      codecatalyst-ecs-deploy-role
      ```

   1. 針對**角色描述**，輸入：

      ```
      CodeCatalyst ECS deploy role
      ```

   1. 選擇建**立角色**。

   您現在已建立具有信任政策的部署角色。

1. 取得部署角色 ARN，如下所示：

   1. 在導覽窗格中，選擇**角色**。

   1. 在搜尋方塊中，輸入您剛建立的角色名稱 (`codecatalyst-ecs-deploy-role`)。

   1. 從清單中選擇角色。

      角色的**摘要**頁面隨即出現。

   1. 在頂端複製 **ARN** 值。供稍後使用。

------
#### [ AWS CLI ]

若要建立建置和部署角色，請完成下列一系列程序。

**為兩個角色建立信任政策**

作為 `CodeCatalystECSUser`，在 中 AWS CloudShell建立信任政策檔案：

1. 建立 檔案：

   ```
   cat > codecatalyst-ecs-trust-policy.json
   ```

1. 在終端機提示中，貼上下列程式碼：

1. 將游標放在最後一個大括號 () 之後`}`。

1. 按 **Enter** ，然後按 **Ctrl\$1d** 儲存檔案並退出貓。

**建立建置政策和建置角色**

1. 建立建置政策：

   1. 作為 `CodeCatalystECSUser`，在 中 AWS CloudShell建立建置政策檔案：

      ```
      cat > codecatalyst-ecs-build-policy.json
      ```

   1. 出現提示時，輸入下列程式碼：

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecr:*",
                      "ec2:*"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. 將游標放在最後一個大括號 () 之後`}`。

   1. 按 **Enter** ，然後按 **Ctrl\$1d** 儲存檔案並退出貓。

1. 將建置政策新增至 AWS：

   ```
   aws iam create-policy \
       --policy-name codecatalyst-ecs-build-policy \
       --policy-document file://codecatalyst-ecs-build-policy.json
   ```

1. 在命令輸出中，記下 `"arn":`值，例如 `arn:aws:iam::111122223333:policy/codecatalyst-ecs-build-policy`。您稍後需要此 ARN。

1. 建立建置角色，並將信任政策連接至該角色：

   ```
   aws iam create-role \
         --role-name codecatalyst-ecs-build-role \
         --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
   ```

1. 將建置政策連接至建置角色：

   ```
   aws iam attach-role-policy \
         --role-name codecatalyst-ecs-build-role \
         --policy-arn arn:aws:iam::111122223333:policy/codecatalyst-ecs-build-policy
   ```

   其中 *arn：aws：iam：：111122223333：policy/codecatalyst-ecs-build-policy* 會取代為您先前記下的建置政策的 ARN。

1. 顯示建置角色的詳細資訊：

   ```
   aws iam get-role \
         --role-name codecatalyst-ecs-build-role
   ```

1. 請記下角色`"Arn":`的值，例如 `arn:aws:iam::111122223333:role/codecatalyst-ecs-build-role`。您稍後需要此 ARN。

**建立部署政策和部署角色**

1. 建立部署政策：

   1. 在 中， AWS CloudShell建立部署政策檔案：

      ```
      cat > codecatalyst-ecs-deploy-policy.json
      ```

   1. 出現提示時，輸入下列程式碼：

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [{
          "Action":[
            "ecs:DescribeServices",
            "ecs:CreateTaskSet",
            "ecs:DeleteTaskSet",
            "ecs:ListClusters",
            "ecs:RegisterTaskDefinition",
            "ecs:UpdateServicePrimaryTaskSet",
            "ecs:UpdateService",
            "elasticloadbalancing:DescribeTargetGroups",
            "elasticloadbalancing:DescribeListeners",
            "elasticloadbalancing:ModifyListener",
            "elasticloadbalancing:DescribeRules",
            "elasticloadbalancing:ModifyRule",
            "lambda:InvokeFunction",
            "lambda:ListFunctions",
            "cloudwatch:DescribeAlarms",
            "sns:Publish",
            "sns:ListTopics", 
            "s3:GetObject",
            "s3:GetObjectVersion",
            "codedeploy:CreateApplication", 
            "codedeploy:CreateDeployment", 
            "codedeploy:CreateDeploymentGroup", 
            "codedeploy:GetApplication", 
            "codedeploy:GetDeployment", 
            "codedeploy:GetDeploymentGroup", 
            "codedeploy:ListApplications", 
            "codedeploy:ListDeploymentGroups", 
            "codedeploy:ListDeployments", 
            "codedeploy:StopDeployment", 
            "codedeploy:GetDeploymentTarget", 
            "codedeploy:ListDeploymentTargets", 
            "codedeploy:GetDeploymentConfig", 
            "codedeploy:GetApplicationRevision", 
            "codedeploy:RegisterApplicationRevision", 
            "codedeploy:BatchGetApplicationRevisions", 
            "codedeploy:BatchGetDeploymentGroups", 
            "codedeploy:BatchGetDeployments", 
            "codedeploy:BatchGetApplications", 
            "codedeploy:ListApplicationRevisions", 
            "codedeploy:ListDeploymentConfigs", 
            "codedeploy:ContinueDeployment"           
         ],
         "Resource":"*",
         "Effect":"Allow"
      },{"Action":[
            "iam:PassRole"
         ],
         "Effect":"Allow",
         "Resource":"*",
         "Condition":{"StringLike":{"iam:PassedToService":[
                  "ecs-tasks.amazonaws.com",
                  "codedeploy.amazonaws.com"
               ]
            }
         }
      }]
      }
      ```

------
**注意**  
第一次使用該角色執行工作流程動作時，請在資源政策陳述式中使用萬用字元，然後在資源名稱可用後縮小政策範圍。  

      ```
      "Resource": "*"
      ```

   1. 將游標放在最後一個大括號 () 之後`}`。

   1. 按 **Enter** ，然後按 **Ctrl\$1d** 儲存檔案並退出貓。

1. 將部署政策新增至 AWS：

   ```
   aws iam create-policy \
       --policy-name codecatalyst-ecs-deploy-policy \
       --policy-document file://codecatalyst-ecs-deploy-policy.json
   ```

1. 在命令輸出中，記下部署政策`"arn":`的值，例如 `arn:aws:iam::111122223333:policy/codecatalyst-ecs-deploy-policy`。您稍後需要此 ARN。

1. 建立部署角色，並將信任政策連接至該角色：

   ```
   aws iam create-role \
         --role-name codecatalyst-ecs-deploy-role \
         --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
   ```

1. 將部署政策連接至部署角色，其中 *arn：aws：iam：：111122223333：policy/codecatalyst-ecs-deploy-policy* 會取代為您先前記下的部署政策的 ARN。

   ```
   aws iam attach-role-policy \
         --role-name codecatalyst-ecs-deploy-role \
         --policy-arn arn:aws:iam::111122223333:policy/codecatalyst-ecs-deploy-policy
   ```

1. 顯示部署角色的詳細資訊：

   ```
   aws iam get-role \
         --role-name codecatalyst-ecs-deploy-role
   ```

1. 請記下角色`"Arn":`的值，例如 `arn:aws:iam::111122223333:role/codecatalyst-ecs-deploy-role`。您稍後需要此 ARN。

------

## 步驟 5：將 AWS 角色新增至 CodeCatalyst
步驟 5：將 AWS 角色新增至 CodeCatalyst

在此步驟中，您將建置角色 (`codecatalyst-ecs-build-role`) 和部署角色 (`codecatalyst-ecs-deploy-role`) 新增至您空間中的 CodeCatalyst 帳戶連線。

**將建置和部署角色新增至您的帳戶連線**

1. 在 CodeCatalyst 中，導覽至您的空間。

1. 選擇**AWS 帳戶**。帳戶連線清單隨即顯示。

1. 選擇代表您建立建置和部署角色 AWS 的帳戶的帳戶連線。

1. **從管理主控台選擇 AWS 管理角色**。

   **將 IAM 角色新增至 Amazon CodeCatalyst 空間**頁面隨即出現。您可能需要登入才能存取頁面。

1. 選取**新增您在 IAM 中建立的現有角色**。

   下拉式清單隨即出現。清單會顯示具有信任政策的所有 IAM 角色，其中包含 `codecatalyst-runner.amazonaws.com``codecatalyst.amazonaws.com`和服務主體。

1. 在下拉式清單中，選擇 `codecatalyst-ecs-build-role`，然後選擇**新增角色**。
**注意**  
如果您看到 `The security token included in the request is invalid`，可能是因為您沒有適當的許可。若要修正此問題，請以您建立 CodeCatalyst 空間時使用 AWS 的帳戶重新登入 AWS 。

1. 選擇**新增 IAM 角色**，選擇**新增您在 IAM 中建立的現有角色**，然後在下拉式清單中選擇 `codecatalyst-ecs-deploy-role`。選擇 **Add role (新增角色)**。

   您現在已將建置和部署角色新增至您的空間。

1. 複製 **Amazon CodeCatalyst 顯示名稱**的值。稍後建立工作流程時，您將需要此值。

## 步驟 6：建立來源儲存庫
步驟 6：建立來源儲存庫

在此步驟中，您會在 CodeCatalyst 中建立來源儲存庫。此儲存庫會存放教學課程的來源檔案，例如任務定義檔案。

如需來源儲存庫的詳細資訊，請參閱 [建立來源儲存庫](source-repositories-create.md)。

**建立來源儲存庫**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 導覽至您的專案 `codecatalyst-ecs-project`。

1. 在導覽窗格中，選擇**程式碼**，然後選擇**來源儲存庫**。

1. 選擇**新增儲存庫**，然後選擇**建立儲存庫**。

1. 在**儲存庫名稱**中，輸入：

   ```
   codecatalyst-ecs-source-repository
   ```

1. 選擇**建立**。

## 步驟 7：新增來源檔案
步驟 7：新增來源檔案

在本節中，您將 Hello World 來源檔案新增至 CodeCatalyst 儲存庫 `codecatalyst-ecs-source-repository`。它們包含：
+ `index.html` 檔案 – 在瀏覽器中顯示 Hello World 訊息。
+ Dockerfile – 描述要用於 Docker 映像的基本映像，以及要套用的 Docker 命令。
+ `taskdef.json` 檔案 – 定義在叢集中啟動任務時要使用的 Docker 映像。

資料夾結構如下所示：

```
.
|— public-html
|  |— index.html
|— Dockerfile
|— taskdef.json
```

**注意**  
下列指示說明如何使用 CodeCatalyst 主控台新增檔案，但您可以視需要使用 Git。如需詳細資訊，請參閱[複製來源儲存庫](source-repositories-clone.md)。

**Topics**
+ [

### index.html
](#deploy-tut-ecs-source-files-index)
+ [

### Dockerfile
](#deploy-tut-ecs-source-files-dockerfile)
+ [

### taskdef.json
](#deploy-tut-ecs-source-files-taskdef)

### index.html
index.html

`index.html` 檔案會在瀏覽器中顯示 Hello World 訊息。

**新增 index.html 檔案**

1. 在 CodeCatalyst 主控台中，前往您的來源儲存庫 `codecatalyst-ecs-source-repository`。

1. 在**檔案中**，選擇**建立檔案**。

1. 針對**檔案名稱**，輸入：

   ```
   public-html/index.html
   ```
**重要**  
請務必包含 `public-html/`字首，以建立相同名稱的資料夾。`index.html` 預期會位於此資料夾中。

1. 在文字方塊中，輸入下列程式碼：

   ```
   <html>
     <head>
       <title>Hello World</title>
       <style>
         body {
         background-color: black;
         text-align: center;
         color: white;
         font-family: Arial, Helvetica, sans-serif;
         }  
       </style>
     </head>
     <body>
       <h1>Hello World</h1>
     </body>
   </html>
   ```

1. 選擇**遞交**，然後再次選擇**遞交**。

   `index.html` 會新增至`public-html`資料夾中的儲存庫。

### Dockerfile
Dockerfile

Dockerfile 說明要使用的基本 Docker 映像，以及要套用的 Docker 命令。如需 Dockerfile 的詳細資訊，請參閱 [Dockerfile 參考](https://docs.docker.com/engine/reference/builder/)。

此處指定的 Dockerfile 表示使用 Apache 2.4 基礎映像 (`httpd`)。它還包含將名為 的來源檔案複製到提供網頁之 Apache 伺服器上`index.html`資料夾的說明。Dockerfile 中的`EXPOSE`說明會告知 Docker 容器正在接聽連接埠 80。

**新增 Dockerfile**

1. 在來源儲存庫中，選擇**建立檔案**。

1. 針對**檔案名稱**，輸入：

   ```
   Dockerfile
   ```

   請勿包含副檔名。
**重要**  
Dockerfile 必須位於儲存庫的根資料夾中。工作流程的 `Docker build`命令預期會存在。

1. 在文字方塊中，輸入下列程式碼：

   ```
   FROM httpd:2.4
   COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html
   EXPOSE 80
   ```

1. 選擇**遞交**，然後再次選擇**遞交**。

   Dockerfile 會新增至您的儲存庫。

### taskdef.json
taskdef.json

您在此步驟中新增的檔案與您已在 中指定的`taskdef.json`檔案相同，差異[步驟 2：將預留位置應用程式部署至 Amazon ECS](#deploy-tut-ecs-placeholder)如下：

這裡的任務定義會使用幾個變數來表示影像： `$REPOSITORY_URI`和 ，而不是在 `image:` 欄位 (`httpd:2.4`) 中指定硬式編碼的 Docker 影像名稱`$IMAGE_TAG`。當您在後續步驟中執行工作流程時，工作流程建置動作所產生的實際值會取代這些變數。

如需任務定義參數的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[任務定義參數](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html)。

**新增 taskdef.json 檔案**

1. 在來源儲存庫中，選擇**建立檔案**。

1. 針對**檔案名稱**，輸入：

   ```
   taskdef.json
   ```

1. 在文字方塊中，輸入下列程式碼：

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role",
       "containerDefinitions": [
           {
               "name": "codecatalyst-ecs-container",
               # The $REPOSITORY_URI and $IMAGE_TAG variables will be replaced 
               # by the workflow at build time (see the build action in the 
               # workflow)
               "image": $REPOSITORY_URI:$IMAGE_TAG,
               "essential": true,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "networkMode": "awsvpc",
       "cpu": "256",
       "memory": "512",
       "family": "codecatalyst-ecs-task-def"
   }
   ```

   在上述程式碼中，取代

   *arn：aws：iam：：account\$1ID：role/codecatalyst-ecs-task-execution-role*

   使用您在 中記下之任務執行角色的 ARN[建立任務執行角色](#deploy-tut-ecs-create-task-execution-role)。

1. 選擇**遞交**，然後再次選擇**遞交**。

   `taskdef.json` 檔案會新增至您的儲存庫。

## 步驟 8：建立和執行工作流程
步驟 8：建立和執行工作流程

在此步驟中，您會建立工作流程來取得來源檔案、將其建置到 Docker 映像中，然後將映像部署到您的 Amazon ECS 叢集。此部署會取代現有的 Apache 預留位置應用程式。

工作流程包含下列依順序執行的建置區塊：
+ 觸發條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ 建置動作 (`BuildBackend`) – 觸發時，動作會使用 Dockerfile 建置 Docker 映像，並將映像推送至 Amazon ECR。建置動作也會`taskdef.json`使用正確的`image`欄位值更新 ，然後建立此檔案的輸出成品。此成品會用作部署動作的輸入，接下來是 。

  如需建置動作的詳細資訊，請參閱 [使用工作流程建置](build-workflow-actions.md)。
+ 部署動作 (`DeployToECS`) – 完成建置動作後，部署動作會尋找建置動作 (`TaskDefArtifact`) 產生的輸出成品、尋找`taskdef.json`其中的 ，並向您的 Amazon ECS 服務註冊。然後，服務會遵循 `taskdef.json` 檔案中的指示，在您的 Amazon ECS 叢集內執行三個 Amazon ECS 任務，以及相關聯的 Hello World Docker 容器。

**建立工作流程**

1. 在 CodeCatalyst 主控台的導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇**建立工作流程**。

1. 針對**來源儲存庫**，選擇 `codecatalyst-ecs-source-repository`。

1. 針對**分支**，選擇 `main`。

1. 選擇**建立**。

1. 刪除 YAML 範例程式碼。

1. 新增下列 YAML 程式碼：
**注意**  
在後續的 YAML 程式碼中，您可以視需要省略這些`Connections:`區段。如果您省略這些區段，您必須確保環境中**預設 IAM 角色**欄位中指定的角色包含 中所述兩個角色的許可和信任政策[步驟 5：將 AWS 角色新增至 CodeCatalyst](#deploy-tut-ecs-import-roles)。如需使用預設 IAM 角色設定環境的詳細資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

   ```
   Name: codecatalyst-ecs-workflow
   SchemaVersion: 1.0
   
   Triggers:
     - Type: PUSH
       Branches:
         - main
   Actions:
     BuildBackend:
       Identifier: aws/build@v1
       Environment:
         Name: codecatalyst-ecs-environment
         Connections:
           - Name: codecatalyst-account-connection
             Role: codecatalyst-ecs-build-role
       Inputs:
         Sources:
           - WorkflowSource
         Variables:
           - Name: REPOSITORY_URI
             Value: 111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo
           - Name: IMAGE_TAG
             Value: ${WorkflowSource.CommitId}
       Configuration:
         Steps:
           #pre_build:
           - Run: echo Logging in to Amazon ECR...
           - Run: aws --version
           - Run: aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com
           #build:
           - Run: echo Build started on `date`
           - Run: echo Building the Docker image...
           - Run: docker build -t $REPOSITORY_URI:latest .
           - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
           #post_build:
           - Run: echo Build completed on `date`
           - Run: echo Pushing the Docker images...
           - Run: docker push $REPOSITORY_URI:latest
           - Run: docker push $REPOSITORY_URI:$IMAGE_TAG
           # Replace the variables in taskdef.json
           - Run: find taskdef.json -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g"
           - Run: find taskdef.json -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g"
           - Run: cat taskdef.json
           # The output artifact will be a zip file that contains a task definition file.
       Outputs:
         Artifacts:
           - Name: TaskDefArtifact
             Files: 
               - taskdef.json
     DeployToECS:
       DependsOn: 
         - BuildBackend
       Identifier: aws/ecs-deploy@v1
       Environment:
         Name: codecatalyst-ecs-environment
         Connections:
           - Name: codecatalyst-account-connection
             Role: codecatalyst-ecs-deploy-role
       Inputs:
         Sources: []
         Artifacts:
           - TaskDefArtifact
       Configuration:
         region: us-west-2
         cluster: codecatalyst-ecs-cluster
         service: codecatalyst-ecs-service
         task-definition: taskdef.json
   ```

   在上述程式碼中，取代：
   + 兩個 *codecatalyst-ecs-environment* 執行個體，其名稱為您在 中建立的環境[先決條件](#deploy-tut-ecs-prereqs)。
   + 這兩個 *codecatalyst-account-connection* 執行個體都具有您帳戶連線的顯示名稱。顯示名稱可能是數字。如需詳細資訊，請參閱[步驟 5：將 AWS 角色新增至 CodeCatalyst](#deploy-tut-ecs-import-roles)。
   + *codecatalyst-ecs-build-role*，內含您在 中建立的建置角色名稱[步驟 4：建立 AWS 角色](#deploy-tut-ecs-build-deploy-roles)。
   + *111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo* （在 `Value:` 屬性中），其中包含您在 中建立的 Amazon ECR 儲存庫的 URI[步驟 3：建立 Amazon ECR 映像儲存庫](#deploy-tut-ecs-ecr)。
   + *111122223333.dkr.ecr.us-west-2.amazonaws.com* （在 `Run: aws ecr`命令中），不含映像尾碼 () 的 Amazon ECR 儲存庫的 URI`/codecatalyst-ecs-image-repo`。
   + *codecatalyst-ecs-deploy-role*，內含您在 中建立的部署角色名稱[步驟 4：建立 AWS 角色](#deploy-tut-ecs-build-deploy-roles)。
   + 使用 AWS 區域碼的 *us-west-2* 這兩個執行個體。如需區域代碼清單，請參閱《》中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)*AWS 一般參考*。
**注意**  
如果您決定不建立建置和部署角色，請將 *codecatalyst-ecs-build-role* 和 *codecatalyst-ecs-deploy-role* 取代為`CodeCatalystWorkflowDevelopmentRole-spaceName`角色的名稱。如需有關此角色的詳細資訊，請參閱 [步驟 4：建立 AWS 角色](#deploy-tut-ecs-build-deploy-roles)。
**提示**  
您可以使用**轉譯 Amazon ECS 任務定義**動作來更新儲存庫和映像名稱，而不是使用先前工作流程程式碼中顯示的 和 `find``sed`命令。如需詳細資訊，請參閱[修改 Amazon ECS 任務定義](render-ecs-action.md)。

1. （選用） 選擇**驗證**，以確保 YAML 程式碼在遞交之前有效。

1. 選擇 **Commit** (遞交)。

1. 在**遞交工作流程**對話方塊中，輸入下列內容：

   1. 針對**遞交訊息**，移除文字並輸入：

      ```
      Add first workflow
      ```

   1. 針對**儲存庫**，選擇 `codecatalyst-ecs-source-repository`。

   1. 針對**分支名稱**，選擇主要。

   1. 選擇 **Commit** (遞交)。

   您現在已建立工作流程。由於工作流程頂端定義的觸發條件，工作流程執行會自動啟動。具體而言，當您將`workflow.yaml`檔案遞交 （並推送） 到您的來源儲存庫時，觸發會啟動工作流程執行。

**檢視工作流程執行進度**

1. 在 CodeCatalyst 主控台的導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇您剛建立的工作流程 `codecatalyst-ecs-workflow`。

1. 選擇 **BuildBackend** 以查看建置進度。

1. 選擇 **DeployToECS** 以查看部署進度。

   如需檢視執行詳細資訊的詳細資訊，請參閱 [檢視工作流程執行狀態和詳細資訊](workflows-view-run.md)。

**驗證部署**

1. 開啟 Amazon ECS 傳統主控台，網址為 [https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/)。

1. 選擇您的叢集 `codecatalyst-ecs-cluster`。

1. 選擇 **Tasks** (任務) 索引標籤。

1. 選擇三個任務中的任一個。

1. 在**公有 IP** 欄位中，選擇**開啟的地址**。

   瀏覽器中會出現「Hello World」頁面，指出 Amazon ECS 服務已成功部署您的應用程式。

## 步驟 9：變更來源檔案
步驟 9：變更來源檔案

在本節中，您會變更來源儲存庫中的 `index.html` 檔案。此變更會導致工作流程建立新的 Docker 映像、使用遞交 ID 標記它、將其推送至 Amazon ECR，並將其部署至 Amazon ECS。

**若要變更 index.html**

1. 在 CodeCatalyst 主控台的導覽窗格中，選擇**程式碼**，然後選擇**來源儲存庫**，然後選擇您的儲存庫 `codecatalyst-ecs-source-repository`。

1. 選擇 `public-html` (下一步)，然後選擇 `index.html` (完成)。

   內容`index.html`隨即出現。

1. 選擇**編輯**。

1. 在第 14 行，將`Hello World`文字變更為 `Tutorial complete!`。

1. 選擇**遞交**，然後再次選擇**遞交**。

   遞交會導致新的工作流程執行開始。

1. （選用） 前往來源儲存庫的主頁面，選擇**檢視遞交**，然後記下`index.html`變更的遞交 ID。

1. 觀看部署進度：

   1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

   1. 選擇 `codecatalyst-ecs-workflow`以檢視最新的執行。

   1. 選擇 **BuildBackend** 和 **DeployToECS** 以查看工作流程執行進度。

1. 確認您的應用程式已更新，如下所示：

   1. 開啟 Amazon ECS 傳統主控台，網址為 [https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/)。

   1. 選擇您的叢集 `codecatalyst-ecs-cluster`。

   1. 選擇 **Tasks** (任務) 索引標籤。

   1. 選擇三個任務中的任一個。

   1. 在**公有 IP** 欄位中，選擇**開啟的地址**。

      `Tutorial complete!` 頁面隨即出現。

1. （選用） 在 中 AWS，切換至 Amazon ECR 主控台，並確認新的 Docker 映像已使用步驟 6 的遞交 ID 標記。

## 清除
清除

清除本教學課程中使用的檔案和服務，以避免收取這些檔案和服務的費用。

在 中 AWS 管理主控台，依此順序清除：

1. 在 Amazon ECS 中，執行下列動作：

   1. 刪除 `codecatalyst-ecs-service`。

   1. 刪除 `codecatalyst-ecs-cluster`。

   1. 取消註冊 `codecatalyst-ecs-task-definition`。

1. 在 Amazon ECR 中，刪除 `codecatalyst-ecs-image-repo`。

1. 在 Amazon EC2 中，刪除 `codecatalyst-ecs-security-group`。

1. 在 IAM Identity Center 中，刪除：

   1. `CodeCatalystECSUser`

   1. `CodeCatalystECSPermissionSet`

在 CodeCatalyst 主控台中，如下所示進行清除：

1. 刪除 `codecatalyst-ecs-workflow`。

1. 刪除 `codecatalyst-ecs-environment`。

1. 刪除 `codecatalyst-ecs-source-repository`。

1. 刪除 `codecatalyst-ecs-project`。

在本教學課程中，您已了解如何使用 CodeCatalyst 工作流程和部署至 Amazon ECS 動作，將應用程式**部署至 Amazon ECS** 服務。

# 將 'Deploy 新增至 Amazon ECS' 動作


使用下列指示將**部署至 Amazon ECS** 動作新增至您的工作流程。

------
#### [ Visual ]

**使用視覺化編輯器將 'Deploy 新增至 Amazon ECS' 動作**

1. 開啟 CodeCatalyst 主控台，網址為 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中選擇 **Amazon CodeCatalyst**。

1. 搜尋**部署至 Amazon ECS** 動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇**部署到 Amazon ECS**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**下載**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 在**輸入**和**組態**索引標籤中，根據您的需求完成欄位。如需每個欄位的說明，請參閱 [「部署到 Amazon ECS」動作 YAML](deploy-action-ref-ecs.md)。此參考提供在 YAML 和視覺化編輯器中顯示的每個欄位 （和對應的 YAML 屬性值） 的詳細資訊。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器將 'Deploy 新增至 Amazon ECS' 動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **Amazon CodeCatalyst**。

1. 搜尋**部署至 Amazon ECS** 動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇**部署到 Amazon ECS**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**下載**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 根據您的需求修改 YAML 程式碼中的屬性。中提供了每個可用屬性的說明[「部署到 Amazon ECS」動作 YAML](deploy-action-ref-ecs.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 「部署到 Amazon ECS」變數
變數 - 「部署到 Amazon ECS」

**部署至 Amazon ECS** 動作會在執行時間產生並設定下列變數。這些稱為*預先定義的變數*。

如需在工作流程中參考這些變數的資訊，請參閱 [使用預先定義的變數](workflows-using-predefined-variables.md)。


| 金鑰 | 值 | 
| --- | --- | 
|  叢集  |  在工作流程執行期間部署至 的 Amazon ECS 叢集名稱。 範例：`codecatalyst-ecs-cluster`  | 
|  deployment-platform  |  部署平台的名稱。 硬式編碼為 `AWS:ECS`。  | 
|  服務  |  在工作流程執行期間部署至 的 Amazon ECS 服務名稱。 範例：`codecatalyst-ecs-service`  | 
|  task-definition-arn  |  在工作流程執行期間註冊之任務定義的 Amazon Resource Name (ARN)。 範例：`arn:aws:ecs:us-west-2:111122223333:task-definition/codecatalyst-task-def:8`上述範例中`:8`的 表示已註冊的修訂。  | 
|  deployment-url  |  Amazon ECS 主控台**事件**索引標籤的連結，您可以在其中檢視與工作流程執行相關聯的 Amazon ECS 部署詳細資訊。 範例：`https://console.aws.amazon.com/ecs/home?region=us-west-2#/clusters/codecatalyst-ecs-cluster/services/codecatalyst-ecs-service/events`  | 
|  region  |  在工作流程執行期間 AWS 區域 部署至 的 區域碼。 範例：`us-west-2`  | 

# 「部署到 Amazon ECS」動作 YAML
YAML - 「部署到 Amazon ECS」

以下是**部署至 Amazon ECS **動作的 YAML 定義。若要了解如何使用此動作，請參閱 [使用工作流程部署至 Amazon ECS](deploy-action-ecs.md)。

此動作定義以區段形式存在於更廣泛的工作流程定義檔案中。如需有關此檔案的詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

**注意**  
下列大多數 YAML 屬性在視覺化編輯器中都有對應的 UI 元素。若要查詢 UI 元素，請使用 **Ctrl\$1F**。 元素將與其相關聯的 YAML 屬性一起列出。

```
# The workflow definition starts here.
# See 最上層屬性 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.   
  ECSDeployAction\$1nn: 
    Identifier: aws/ecs-deploy@v1
    DependsOn:
      - build-action
    Compute:  
      Type: EC2 | Lambda
      Fleet: fleet-name
    Timeout: timeout-minutes
    Environment:
      Name: environment-name
      Connections:
        - Name: account-connection-name
          Role: iam-role-name
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - task-definition-artifact
    Configuration: 
      region: us-east-1 
      cluster: ecs-cluster
      service: ecs-service
      task-definition: task-definition-path
      force-new-deployment: false|true
      codedeploy-appspec: app-spec-file-path
      codedeploy-application: application-name
      codedeploy-deployment-group: deployment-group-name
      codedeploy-deployment-description: deployment-description
```

## ECSDeployAction
ECSDeployAction

(必要)

指定動作的名稱。工作流程中的所有動作名稱都必須是唯一的。動作名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您無法使用引號在動作名稱中啟用特殊字元和空格。

預設：`ECSDeployAction_nn`。

對應的 UI：組態索引標籤/**動作顯示名稱**

## Identifier
Identifier

(*ECSDeployAction*/**Identifier**)

(必要)

識別 動作。除非您想要變更版本，否則請勿變更此屬性。如需詳細資訊，請參閱[指定要使用的動作版本](workflows-action-versions.md)。

預設：`aws/ecs-deploy@v1`。

對應的 UI：工作流程圖表/ECSDeployAction\$1nn/**aws/ecs-deploy@v1** 標籤

## DependsOn
DependsOn

(*ECSDeployAction*/**DependsOn**)

(選用)

指定必須成功執行的動作、動作群組或閘道，才能執行此動作。

如需 'depends on' 功能的詳細資訊，請參閱 [定序動作](workflows-depends-on.md)。

對應的 UI：輸入索引標籤/**取決於 - 選用**

## Compute


(*ECSDeployAction*/**Compute**)

(選用)

用來執行工作流程動作的運算引擎。您可以在工作流程層級或動作層級指定運算，但不能同時指定兩者。在工作流程層級指定時，運算組態會套用至工作流程中定義的所有動作。在工作流程層級，您也可以在同一個執行個體上執行多個動作。如需詳細資訊，請參閱[跨動作共用運算](compute-sharing.md)。

對應的 UI：*無*

## Type


(*ECSDeployAction*/Compute/**Type**)

（如果[Compute](#deploy.action.ecs.computename)包含 則為必要）

運算引擎的類型。您可以使用下列其中一個值：
+ **EC2** （視覺化編輯器） 或 `EC2`(YAML 編輯器）

  最佳化動作執行期間的彈性。
+ **Lambda** （視覺化編輯器） 或 `Lambda`(YAML 編輯器）

  最佳化的動作啟動速度。

如需運算類型的更多相關資訊，請參閱[運算類型](workflows-working-compute.md#compute.types)。

對應的 UI：組態索引標籤/進階 - 選用/**運算類型**

## Fleet


(*ECSDeployAction*/Compute/**Fleet**)

(選用)

指定將執行工作流程或工作流程動作的機器或機群。使用隨需機群時，當動作開始時，工作流程會佈建所需的資源，並在動作完成時銷毀機器。隨需機群的範例：`Linux.x86-64.Large`、`Linux.x86-64.XLarge`。如需隨需機群的詳細資訊，請參閱 [隨需機群屬性](workflows-working-compute.md#compute.on-demand)。

使用佈建機群，您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態，準備好立即處理動作。如需佈建機群的詳細資訊，請參閱 [佈建的機群屬性](workflows-working-compute.md#compute.provisioned-fleets)。

如果省略 `Fleet` ，則預設值為 `Linux.x86-64.Large`。

對應的 UI：組態索引標籤/進階 - 選用/**運算機群**

## Timeout
Timeout

(*ECSDeployAction*/**Timeout**)

(選用)

指定動作在 CodeCatalyst 結束動作之前可執行的時間，以分鐘為單位 (YAML 編輯器） 或小時和分鐘為單位。最小值為 5 分鐘，最大值如 中所述[CodeCatalyst 中工作流程的配額](workflows-quotas.md)。預設逾時與最大逾時相同。

對應的 UI：組態索引標籤/**逾時 - 選用 **

## Environment


(*ECSDeployAction*/**Environment**)

(必要)

指定要與 動作搭配使用的 CodeCatalyst 環境。動作會連線至所選環境中指定的 AWS 帳戶 和選用 Amazon VPC。動作會使用環境中指定的預設 IAM 角色來連線至 AWS 帳戶，並使用 [Amazon VPC 連線](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色來連線至 Amazon VPC。

**注意**  
如果預設 IAM 角色沒有 動作所需的許可，您可以將動作設定為使用不同的角色。如需詳細資訊，請參閱[變更 動作的 IAM 角色](deploy-environments-switch-role.md)。

如需環境的詳細資訊，請參閱 [部署至 AWS 帳戶 和 VPCs](deploy-environments.md)和 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：組態索引標籤/**環境**

## Name


(*ECSDeployAction*/Environment/**Name**)

（如果[Environment](#deploy.action.ecs.environment)包含 則為必要）

指定您要與動作建立關聯的現有環境名稱。

對應的 UI：組態索引標籤/**環境**

## Connections


(*ECSDeployAction*/Environment/**Connections**)

（動作的較新版本為選用；較舊版本為必要）

指定要與動作建立關聯的帳戶連線。您可以在 下指定最多一個帳戶連線`Environment`。

如果您未指定帳戶連線：
+ 動作會使用 CodeCatalyst 主控台中環境指定的 AWS 帳戶 連線和預設 IAM 角色。如需將帳戶連線和預設 IAM 角色新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。
+ 預設 IAM 角色必須包含 動作所需的政策和許可。若要判斷這些政策和許可是什麼，請參閱動作 YAML 定義文件中**角色**屬性的描述。

如需帳戶連線的詳細資訊，請參閱 [允許存取已連線 AWS 的資源 AWS 帳戶](ipa-connect-account.md)。如需將帳戶連線新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**AWS account connection**

## Name


(*ECSDeployAction*/Environment/Connections/**Name**)

（如果[Connections](#deploy.action.ecs.environment.connections)包含 則為必要）

指定帳戶連線的名稱。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What*我的環境*是什麼？/三個點選單/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/ **AWS 帳戶連線**

## Role


(*ECSDeployAction*/Environment/Connections/**Role**)

（如果[Connections](#deploy.action.ecs.environment.connections)包含 則為必要）

指定**部署至 Amazon ECS **動作用來存取的 IAM 角色名稱 AWS。請確定您已[將角色新增至 CodeCatalyst 空間](ipa-connect-account-addroles.md)，且該角色包含下列政策。

如果您未指定 IAM 角色，則動作會使用 CodeCatalyst 主控台中[環境中](deploy-environments.md)列出的預設 IAM 角色。如果您在環境中使用預設角色，請確定其具有下列政策。
+ 下列許可政策：
**警告**  
將許可限制為下列政策中顯示的許可。使用具有更廣泛許可的角色可能會帶來安全風險。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
      "Action":[
        "ecs:DescribeServices",
        "ecs:CreateTaskSet",
        "ecs:DeleteTaskSet",
        "ecs:ListClusters",
        "ecs:RegisterTaskDefinition",
        "ecs:UpdateServicePrimaryTaskSet",
        "ecs:UpdateService",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:DescribeListeners",
        "elasticloadbalancing:ModifyListener",
        "elasticloadbalancing:DescribeRules",
        "elasticloadbalancing:ModifyRule",
        "lambda:InvokeFunction",
        "lambda:ListFunctions",
        "cloudwatch:DescribeAlarms",
        "sns:Publish",
        "sns:ListTopics", 
        "s3:GetObject",
        "s3:GetObjectVersion",
        "codedeploy:CreateApplication", 
        "codedeploy:CreateDeployment", 
        "codedeploy:CreateDeploymentGroup", 
        "codedeploy:GetApplication", 
        "codedeploy:GetDeployment", 
        "codedeploy:GetDeploymentGroup", 
        "codedeploy:ListApplications", 
        "codedeploy:ListDeploymentGroups", 
        "codedeploy:ListDeployments", 
        "codedeploy:StopDeployment", 
        "codedeploy:GetDeploymentTarget", 
        "codedeploy:ListDeploymentTargets", 
        "codedeploy:GetDeploymentConfig", 
        "codedeploy:GetApplicationRevision", 
        "codedeploy:RegisterApplicationRevision", 
        "codedeploy:BatchGetApplicationRevisions", 
        "codedeploy:BatchGetDeploymentGroups", 
        "codedeploy:BatchGetDeployments", 
        "codedeploy:BatchGetApplications", 
        "codedeploy:ListApplicationRevisions", 
        "codedeploy:ListDeploymentConfigs", 
        "codedeploy:ContinueDeployment"           
     ],
     "Resource":"*",
     "Effect":"Allow"
  },{"Action":[
        "iam:PassRole"
     ],
     "Effect":"Allow",
     "Resource":"*",
     "Condition":{"StringLike":{"iam:PassedToService":[
              "ecs-tasks.amazonaws.com",
              "codedeploy.amazonaws.com"
           ]
        }
     }
  }]
  }
  ```

------
**注意**  
第一次使用角色時，請在資源政策陳述式中使用下列萬用字元，然後在可用的資源名稱縮小政策範圍。  

  ```
  "Resource": "*"
  ```
+ 下列自訂信任政策：

**注意**  
如有需要，您可以使用 `CodeCatalystWorkflowDevelopmentRole-spaceName`角色搭配此動作。如需有關此角色的詳細資訊，請參閱 [為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有可能造成安全風險的完整存取許可。我們建議您只在安全性較少的教學課程和案例中使用此角色。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What*我的環境*是什麼？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**Role**

## Inputs


(*ECSDeployAction*/**Inputs**)

(選用)

`Inputs` 區段定義工作流程執行期間 `ECSDeployAction`所需的資料。

**注意**  
每個**部署到 Amazon ECS **動作只允許一個輸入 （來源或成品）。

對應的 UI：**輸入**索引標籤

## Sources


(*ECSDeployAction*/Inputs/**Sources**)

（如果您的任務定義檔案存放在來源儲存庫中，則為必要項目）

如果您的任務定義檔案存放在來源儲存庫中，請指定該來源儲存庫的標籤。目前，唯一支援的標籤是 `WorkflowSource`。

如果您的任務定義檔案不包含在來源儲存庫中，它必須位於另一個動作所產生的成品中。

如需來源的詳細資訊，請參閱 [將來源儲存庫連線至工作流程](workflows-sources.md)。

對應的 UI：輸入索引標籤/**來源 - 選用**

## Artifacts - input


(*ECSDeployAction*/Inputs/**Artifacts**)

（如果您的任務定義檔案存放在先前動作的[輸出成品](workflows-working-artifacts-output.md)中，則為必要）

如果您要部署的任務定義檔案包含在先前動作產生的成品中，請在此處指定該成品。如果您的任務定義檔案不包含在成品中，它必須位於您的來源儲存庫中。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：組態索引標籤/**成品 - 選用**

## Configuration


(*ECSDeployAction*/**Configuration**)

(必要)

您可以在此區段定義 動作的組態屬性。

對應的 UI：**組態**索引標籤

## region


(Configuration/**region**)

(必要)

指定 Amazon ECS 叢集和服務所在的 AWS 區域。如需區域代碼的清單，請參閱《》中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)*AWS 一般參考*。

對應的 UI：組態索引標籤/**區域**

## cluster


(*ECSDeployAction*/Configuration/**cluster**)

(必要)

指定現有 Amazon ECS 叢集的名稱。**部署至 Amazon ECS** 動作會將您的容器化應用程式做為任務部署至此叢集。如需 Amazon ECS 叢集的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[叢集](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-clusters)。

對應的 UI：組態索引標籤/**叢集**

## service


(*ECSDeployAction*/Configuration/**service**)

(必要)

指定將執行個體化任務定義檔案的現有 Amazon ECS 服務名稱。此服務必須位於 `cluster` 欄位中指定的叢集下。如需 Amazon ECS 服務的詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html) *服務*。

對應的 UI：組態索引標籤/**服務**

## task-definition


(*ECSDeployAction*/Configuration/**task-definition**)

(必要)

指定現有任務定義檔案的路徑。如果檔案位於您的來源儲存庫中，路徑會與來源儲存庫根資料夾相對。如果您的檔案位於先前工作流程動作的成品中，則路徑會與成品根資料夾相對。如需任務定義檔案的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[任務定義](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-task-definitions)。

對應的 UI：組態索引標籤/**任務定義**

## force-new-deployment


(*ECSDeployAction*/Configuration/**force-new-deployment**)

(必要)

如果啟用，Amazon ECS 服務可以在不變更服務定義的情況下啟動新的部署。強制部署會導致服務停止所有目前正在執行的任務，並啟動新任務。如需強制新部署的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[更新服務](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service.html)。

預設：`false`

對應的 UI：組態索引標籤/**強制新部署服務**

## codedeploy-appspec


(*ECSDeployAction*/Configuration/**codedeploy-appspec**)

（如果您已將 Amazon ECS 服務設定為使用藍/綠部署，則此為必要項目，否則請省略）

指定現有 CodeDeploy 應用程式規格 (AppSpec) 檔案的名稱和路徑。此檔案必須位於 CodeCatalyst 來源儲存庫的根目錄。如需 AppSpec 檔案的詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*》中的 [CodeDeploy 應用程式規格 (AppSpec) 檔案](https://docs.aws.amazon.com/codedeploy/latest/userguide/application-specification-files.html)。

**注意**  
只有在您已將 Amazon ECS 服務設定為執行藍/綠部署時，才提供 CodeDeploy 資訊。對於滾動更新部署 （預設），省略 CodeDeploy 資訊。如需 Amazon ECS 部署的詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 部署類型](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)。 **

**注意**  
**CodeDeploy** 欄位可能會隱藏在視覺化編輯器中。若要讓它們出現，請參閱 [為什麼視覺化編輯器中缺少 CodeDeploy 欄位？](troubleshooting-workflows.md#troubleshooting-workflows-codedeploy)。

對應的 UI：組態索引標籤/**CodeDeploy AppSpec**

## codedeploy-application


(*ECSDeployAction*/Configuration/**codedeploy-application**)

（如果`codedeploy-appspec`包含 則為必要）

指定現有 CodeDeploy 應用程式的名稱。如需 CodeDeploy 應用程式的詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*》[中的在 CodeDeploy 中使用應用程式](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications.html)。

對應的 UI：組態索引標籤/**CodeDeploy 應用程式**

## codedeploy-deployment-group


(*ECSDeployAction*/Configuration/**codedeploy-deployment-group**)

（如果`codedeploy-appspec`包含 則為必要）

指定現有 CodeDeploy 部署群組的名稱。如需 CodeDeploy 部署群組的詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*[》中的在 CodeDeploy 中使用部署群組](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html)。

對應的 UI：組態索引標籤/**CodeDeploy 部署群組**

## codedeploy-deployment-description


(*ECSDeployAction*/Configuration/**codedeploy-deployment-description**)

(選用)

指定此動作將建立之部署的描述。如需詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*》中的[在 CodeDeploy 中使用部署](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments.html)。

對應的 UI：組態索引標籤/**CodeDeploy 部署描述**