

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

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

# 修改 Amazon ECS 任務定義
<a name="render-ecs-action"></a>

本節說明如何使用 CodeCatalyst 工作流程更新 Amazon Elastic Container Service (Amazon ECS) [任務定義檔案中](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-task-definitions)`image`的欄位。若要達成此目的，您必須將**轉譯 Amazon ECS 任務定義**動作新增至工作流程。此動作會使用工作流程在執行時間提供的 Docker 映像名稱，更新任務定義檔案中的映像欄位。

**注意**  
您也可以使用此動作，以環境變數更新任務定義的`environment`欄位。

**Topics**
+ [何時使用此動作](#render-ecs-action-when-to-use)
+ [「轉譯 Amazon ECS 任務定義」動作的運作方式](#render-ecs-action-how-it-works)
+ [「轉譯 Amazon ECS 任務定義」動作所使用的執行期映像](#render-ecs-action-runtime)
+ [範例：修改 Amazon ECS taskdef](render-ecs-action-example-workflow.md)
+ [新增「轉譯 Amazon ECS 任務定義」動作](render-ecs-action-add.md)
+ [檢視更新的任務定義檔案](render-ecs-action-view.md)
+ [「轉譯 Amazon ECS 任務定義」變數](render-ecs-action-variables.md)
+ [「轉譯 Amazon ECS 任務定義」動作 YAML](render-ecs-action-ref.md)

## 何時使用此動作
<a name="render-ecs-action-when-to-use"></a>

如果您有使用動態內容建置和標記 Docker 映像的工作流程，例如遞交 ID 或時間戳記，請使用此選項。

如果您的任務定義檔案包含一律保持不變的影像值，請勿使用此動作。在這種情況下，您可以將映像的名稱手動輸入任務定義檔案中。

## 「轉譯 Amazon ECS 任務定義」動作的運作方式
<a name="render-ecs-action-how-it-works"></a>

您必須在工作流程中使用**轉譯 Amazon ECS 任務定義**動作搭配**建置**和**部署至 Amazon ECS** 動作。這些動作一起運作的方式如下：

1. **建置**動作會建置您的 Docker 映像，並使用名稱、遞交 ID、時間戳記或其他動態內容加以標記。例如，您的建置動作可能如下所示：

   ```
   MyECSWorkflow
     Actions:
       BuildAction:
         Identifier: aws/build@v1
         ...
         Configuration:
           Steps:
           # Build, tag, and push the Docker image...
             - Run: docker build -t MyDockerImage:${WorkflowSource.CommitId} .
             ...
   ```

   在上述程式碼中， `docker build -t`指令指示 建置 Docker 映像，並在動作執行時間使用遞交 ID 標記映像。產生的映像名稱可能如下所示：

   `MyDockerImage:a37bd7e`

1. **轉譯 Amazon ECS 任務定義**動作會將動態產生的映像名稱 `MyDockerImage:a37bd7e`新增至您的任務定義檔案，如下所示：

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role",
       "containerDefinitions": [
           {
               "name": "codecatalyst-ecs-container",
               "image":  MyDockerImage:a37bd7e, 
               "essential": true,
               ...
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
   ...
   }
   ```

   您也可以選擇讓**轉譯 Amazon ECS 任務定義**動作將環境變數新增至任務定義，如下所示：

   ```
   {
     "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role",
     "containerDefinitions": [
       {
         "name": "codecatalyst-ecs-container",
         "image":  MyDockerImage:a37bd7e,
         ...
         "environment": [
           {
             name": "ECS_LOGLEVEL",
             value": "info"
           }
         ]
       }
     ],
   ...
   }
   ```

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

1. **部署至 Amazon ECS** 動作會向 Amazon ECS 註冊更新的任務定義檔案。註冊更新的任務定義檔案會將新映像部署`MyDockerImage:a37bd7e`到 Amazon ECS。

## 「轉譯 Amazon ECS 任務定義」動作所使用的執行期映像
<a name="render-ecs-action-runtime"></a>

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