

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

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

# 使用工作流程部署至 Amazon ECS
<a name="deploy-action-ecs"></a>

本節說明如何使用 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」動作所使用的執行期映像
<a name="deploy-action-ecs-runtime"></a>

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

# 教學課程：將應用程式部署至 Amazon ECS
<a name="deploy-tut-ecs"></a>

在本教學課程中，您將了解如何使用工作流程、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)

## 先決條件
<a name="deploy-tut-ecs-prereqs"></a>

開始之前：
+ 您需要具有連線 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
<a name="deploy-tut-ecs-user-cloudshell"></a>

本教學課程的第一步是在 中建立使用者 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
<a name="deploy-tut-ecs-placeholder"></a>

在本節中，您將手動將預留位置應用程式部署至 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 映像儲存庫
<a name="deploy-tut-ecs-ecr"></a>

在本節中，您會在 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 角色
<a name="deploy-tut-ecs-build-deploy-roles"></a>

在本節中，您會建立 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
<a name="deploy-tut-ecs-import-roles"></a>

在此步驟中，您將建置角色 (`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：建立來源儲存庫
<a name="deploy-tut-ecs-source-repo"></a>

在此步驟中，您會在 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：新增來源檔案
<a name="deploy-tut-ecs-source-files"></a>

在本節中，您將 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
<a name="deploy-tut-ecs-source-files-index"></a>

`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
<a name="deploy-tut-ecs-source-files-dockerfile"></a>

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
<a name="deploy-tut-ecs-source-files-taskdef"></a>

您在此步驟中新增的檔案與您已在 中指定的`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：建立和執行工作流程
<a name="deploy-tut-ecs-workflow"></a>

在此步驟中，您會建立工作流程來取得來源檔案、將其建置到 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：變更來源檔案
<a name="deploy-tut-ecs-change"></a>

在本節中，您會變更來源儲存庫中的 `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 標記。

## 清除
<a name="deploy-tut-ecs-cleanup"></a>

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

在 中 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' 動作
<a name="deploy-action-ecs-adding"></a>

使用下列指示將**部署至 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」變數
<a name="deploy-action-ecs-variables"></a>

**部署至 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
<a name="deploy-action-ref-ecs"></a>

以下是**部署至 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
<a name="deploy.action.ecs.name"></a>

(必要)

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

預設：`ECSDeployAction_nn`。

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

## Identifier
<a name="deploy.action.ecs.identifier"></a>

(*ECSDeployAction*/**Identifier**)

(必要)

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

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

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

## DependsOn
<a name="deploy.action.ecs.dependson"></a>

(*ECSDeployAction*/**DependsOn**)

(選用)

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

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

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

## Compute
<a name="deploy.action.ecs.computename"></a>

(*ECSDeployAction*/**Compute**)

(選用)

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

對應的 UI：*無*

## Type
<a name="deploy.action.ecs.computetype"></a>

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

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

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

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

  最佳化的動作啟動速度。

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

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

## Fleet
<a name="deploy.action.ecs.computefleet"></a>

(*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
<a name="deploy.action.ecs.timeout"></a>

(*ECSDeployAction*/**Timeout**)

(選用)

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

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

## Environment
<a name="deploy.action.ecs.environment"></a>

(*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
<a name="deploy.action.ecs.environment.name"></a>

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

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

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

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

## Connections
<a name="deploy.action.ecs.environment.connections"></a>

(*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
<a name="deploy.action.ecs.environment.connections.name"></a>

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

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

指定帳戶連線的名稱。

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

## Role
<a name="deploy.action.ecs.environment.connections.role"></a>

(*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
<a name="deploy.action.ecs.inputs"></a>

(*ECSDeployAction*/**Inputs**)

(選用)

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

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

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

## Sources
<a name="deploy.action.ecs.inputs.sources"></a>

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

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

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

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

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

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

## Artifacts - input
<a name="deploy.action.ecs.inputs.artifacts"></a>

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

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

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

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

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

## Configuration
<a name="deploy.action.ecs.configuration"></a>

(*ECSDeployAction*/**Configuration**)

(必要)

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

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

## region
<a name="deploy.action.ecs.region"></a>

(Configuration/**region**)

(必要)

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

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

## cluster
<a name="deploy.action.ecs.cluster"></a>

(*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
<a name="deploy.action.ecs.service"></a>

(*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
<a name="deploy.action.ecs.task.definition"></a>

(*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
<a name="deploy.action.ecs.forcenewdeployment"></a>

(*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
<a name="deploy.action.ecs.codedeploy.appspec"></a>

(*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
<a name="deploy.action.ecs.codedeploy.application"></a>

(*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
<a name="deploy.action.ecs.codedeploy.deploymentgroup"></a>

(*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
<a name="deploy.action.ecs.codedeploy.deploymentdescription"></a>

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

(選用)

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

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