

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)。

# 範例：修改 Amazon ECS taskdef
<a name="render-ecs-action-example-workflow"></a>

以下是包含**轉譯 Amazon ECS 任務定義**動作，以及建置和部署動作的完整工作流程範例。工作流程的目的是在 Amazon ECS 叢集中建置和部署 Docker 映像。工作流程包含下列依順序執行的建置區塊：
+ **觸發**條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ **建置**動作 (`BuildDocker`) – 觸發時，動作會使用 Dockerfile 建置 Docker 映像、使用遞交 ID 標記映像，並將映像推送至 Amazon ECR。如需建置動作的詳細資訊，請參閱 [使用工作流程建置](build-workflow-actions.md)。
+ **轉譯 Amazon ECS 任務定義**動作 (`RenderTaskDef`) – 建置動作完成後，此動作會使用包含正確遞交 ID `image`的欄位值，來更新`taskdef.json`位於來源儲存庫根中的現有 。它會使用新的檔案名稱 (`task-definition-random-string.json`) 儲存更新的檔案，然後建立包含此檔案的輸出成品。轉譯動作也會產生名為 的變數，`task-definition`並將其設定為新任務定義檔案的名稱。成品和變數將用於部署動作，接下來是 。
+ 部署**至 Amazon ECS** 動作 (`DeployToECS`) – **轉譯 Amazon ECS 任務定義**動作完成後，**部署至 Amazon ECS** 動作會尋找轉譯動作 (`TaskDefArtifact`) 產生的輸出成品、尋找其中`task-definition-random-string.json`的檔案，並將其註冊至 Amazon ECS 服務。然後，Amazon ECS 服務會遵循 `task-definition-random-string.json` 檔案中的指示，在您的 Amazon ECS 叢集內執行 Amazon ECS 任務以及相關聯的 Docker 映像容器。

```
Name: codecatalyst-ecs-workflow
SchemaVersion: 1.0

Triggers:
  - Type: PUSH
    Branches:
      - main
Actions:
  BuildDocker:
    Identifier: aws/build@v1
    Environment:
      Name: codecatalyst-ecs-environment
      Connections:
        - Name: codecatalyst-account-connection
          Role: codecatalyst-ecs-build-role
    Inputs:
      Variables:
        - Name: REPOSITORY_URI
          Value: 111122223333.dkr.ecr.us-east-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-east-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-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
        
  RenderTaskDef:
    DependsOn: 
      - BuildDocker
    Identifier: aws/ecs-render-task-definition@v1
    Inputs:
      Variables:
        - Name: REPOSITORY_URI
          Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo
        - Name: IMAGE_TAG
          Value: ${WorkflowSource.CommitId}
    Configuration:      
      task-definition: taskdef.json
      container-definition-name: codecatalyst-ecs-container
      image: $REPOSITORY_URI:$IMAGE_TAG 
    # The output artifact contains the updated task definition file. 
    # The new file is prefixed with 'task-definition'.
    # The output variable is set to the name of the updated task definition file. 
    Outputs:
      Artifacts:
        - Name: TaskDefArtifact
          Files: 
            - "task-definition*"
      Variables:
        - task-definition
        
  DeployToECS:
    Identifier: aws/ecs-deploy@v1
    Environment:
      Name: codecatalyst-ecs-environment
      Connections:
        - Name: codecatalyst-account-connection
          Role: codecatalyst-ecs-deploy-role
    #Input artifact contains the updated task definition file.
    Inputs:
      Sources: []
      Artifacts:
        - TaskDefArtifact
    Configuration:
      region: us-east-2
      cluster: codecatalyst-ecs-cluster
      service: codecatalyst-ecs-service
      task-definition: ${RenderTaskDef.task-definition}
```

# 新增「轉譯 Amazon ECS 任務定義」動作
<a name="render-ecs-action-add"></a>

 使用下列指示，將**轉譯 Amazon ECS 任務定義**動作新增至您的工作流程。

**先決條件**  
開始之前，請確定您有一個工作流程，其中包含可動態產生 Docker 映像的建置動作。如需詳細資訊，請參閱上述[範例工作流程](render-ecs-action-example-workflow.md)。

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

**使用視覺化編輯器新增「轉譯 Amazon ECS 任務定義」動作**

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

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](render-ecs-action-ref.md)。此參考提供在 YAML 和視覺化編輯器中顯示的每個欄位 （和對應的 YAML 屬性值） 的詳細資訊。

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

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

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

**使用 YAML 編輯器新增「轉譯 Amazon ECS 任務定義」動作**

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

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](render-ecs-action-ref.md)。

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

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

------

**後續步驟**

新增轉譯動作之後，請依照 中的指示，將**部署至 Amazon ECS** 動作新增至您的工作流程[使用工作流程部署至 Amazon ECS](deploy-action-ecs.md)。在新增部署動作時，請執行下列動作：

1. 在部署動作的**輸入**索引標籤中，在**成品 - 選用**中，選取轉譯動作產生的成品。它包含更新的任務定義檔案。

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

1. 在部署動作的**組態**索引標籤中，在**任務定義**欄位中指定下列動作變數：`${action-name.task-definition}`其中 *action-name* 是轉譯動作的名稱，例如 `RenderTaskDef`。轉譯動作會將此變數設定為任務定義檔案的新名稱。

   如需變數的詳細資訊，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

   如需如何設定部署動作的詳細資訊，請參閱上述[工作流程範例](render-ecs-action-example-workflow.md)。

# 檢視更新的任務定義檔案
<a name="render-ecs-action-view"></a>

您可以檢視更新任務定義檔案的名稱和內容。

**若要檢視更新的任務定義檔案名稱，請在**轉譯 Amazon ECS 任務定義**動作處理完畢之後。**

1. 尋找包含已完成轉譯動作的執行：

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

   1. 選擇您的專案。

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

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

   1. 選擇包含已完成轉譯動作的執行。

1. 在工作流程圖表中，選擇轉譯動作。

1. 選擇**輸出**。

1. 選擇**變數**。

1. 任務定義檔案名稱隨即顯示。它看起來類似於 `task-definition--259-0a2r7gxlTF5X-.json`。

**檢視更新任務定義檔案的內容**

1. 尋找包含已完成轉譯動作的執行：

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

   1. 選擇您的專案。

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

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

   1. 選擇包含已完成轉譯動作的執行。

1. 在工作流程執行中，在頂端的**視覺化**和 **YAML** 旁，選擇**工作流程輸出**。

1. 在**成品**區段中，選擇包含更新任務定義檔案的成品旁的**下載**。此成品會將 **Produced by** column 設定為轉譯動作的名稱。

1. 開啟 .zip 檔案以檢視任務定義 .json 檔案。

# 「轉譯 Amazon ECS 任務定義」變數
<a name="render-ecs-action-variables"></a>

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

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


| 金鑰 | 值 | 
| --- | --- | 
|  任務定義  |  提供給由**轉譯 Amazon ECS 任務定義動作更新之任務定義**檔案的名稱。名稱會遵循格式 `task-definition-random-string.json`。 範例：`task-definition--259-0a2r7gxlTF5Xr.json`  | 

# 「轉譯 Amazon ECS 任務定義」動作 YAML
<a name="render-ecs-action-ref"></a>

以下是**轉譯 Amazon ECS 任務定義動作的 YAML 定義**。若要了解如何使用此動作，請參閱 [修改 Amazon ECS 任務定義](render-ecs-action.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.   
  ECSRenderTaskDefinition\$1nn: 
    Identifier: aws/ecs-render-task-definition@v1
    DependsOn:
      - build-action
    Compute:  
      Type: EC2 | Lambda
      Fleet: fleet-name
    Timeout: timeout-minutes
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - task-definition-artifact
      Variables:
        - Name: variable-name-1
          Value: variable-value-1
        - Name: variable-name-2
          Value: variable-value-2
    Configuration 
      task-definition: task-definition-path
      container-definition-name: container-definition-name
      image: docker-image-name
      environment-variables:
        - variable-name-1=variable-value-1
        - variable-name-2=variable-value-2
    Outputs:
      Artifacts:
        - Name: TaskDefArtifact
          Files: "task-definition*"
      Variables:
        - task-definition
```

## ECSRenderTaskDefinition
<a name="render.ecs.name"></a>

(必要)

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

預設：`ECSRenderTaskDefinition_nn`。

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

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

(*ECSRenderTaskDefinition*/**Identifier**)

(必要)

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

預設：`aws/ecs-render-task-definition@v1`。

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

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

(*ECSRenderTaskDefinition*/**DependsOn**)

(選用)

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

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

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

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

(*ECSRenderTaskDefinition*/**Compute**)

(選用)

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

對應的 UI：*無*

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

(*ECSRenderTaskDefinition*/Compute/**Type**)

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

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

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

  最佳化動作啟動速度。

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

對應的 UI：組態索引標籤/**運算類型**

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

(*ECSRenderTaskDefinition*/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="render.ecs.timeout"></a>

(*ECSRenderTaskDefinition*/**Timeout**)

(選用)

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

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

## Inputs
<a name="render.ecs.inputs"></a>

(*ECSRenderTaskDefinition*/**Inputs**)

(選用)

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

**注意**  
每個**轉譯 Amazon ECS 任務定義**動作只允許一個輸入 （來源或成品）。變數不會計入此總計。

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

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

(*ECSRenderTaskDefinition*/Inputs/**Sources**)

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

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

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

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

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

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

(*ECSRenderTaskDefinition*/Inputs/**Artifacts**)

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

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

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

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

## Variables - input
<a name="render.ecs.inputs.variables"></a>

(*ECSRenderTaskDefinition*/Inputs/**Variables**)

(必要)

指定名稱/值對的序列，以定義您要提供給動作的輸入變數。變數名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在變數名稱中啟用特殊字元和空格。

如需變數的詳細資訊，包括範例，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

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

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

(*ECSRenderTaskDefinition*/**Configuration**)

(必要)

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

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

## task-definition
<a name="render.ecs.task.definition"></a>

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

(必要)

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

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

## container-definition-name
<a name="render.ecs.container.name"></a>

(*ECSRenderTaskDefinition*/Configuration/**container-definition-name**)

(必要)

指定執行 Docker 映像的容器名稱。您可以在任務定義檔案中的 `containerDefinitions`、 `name` 欄位中找到此名稱。如需詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[名稱](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_name)。

對應的 UI：組態索引標籤/**容器名稱**

## image
<a name="render.ecs.image"></a>

(*ECSRenderTaskDefinition*/Configuration/**image**)

(必要)

指定您希望**轉譯 Amazon ECS 任務定義**動作新增至任務定義檔案的 Docker 映像名稱。動作會將此名稱新增至任務定義檔案中的 `containerDefinitions`， `image` 欄位。如果值已存在於 `image` 欄位中，則動作會覆寫該值。您可以在映像名稱中包含變數。

範例：

如果您指定 `MyDockerImage:${WorkflowSource.CommitId}`，動作會`MyDockerImage:commit-id`新增至任務定義檔案，其中 *commit-id* 是工作流程在執行時間產生的遞交 ID。

如果您指定 `my-ecr-repo/image-repo:$(date +%m-%d-%y-%H-%m-%s)`，動作會將 *my-ecr-repo*/image-repo：*date \$1%m-%d-%y-%H-%m-%s* 新增至任務定義檔案，其中 *my-ecr-repo* 是 Amazon Elastic Container Registry (ECR) 的 URI，而 *date \$1%m-%d-%y-%H-%m-%s* 是工作流程在執行時間`month-day-year-hour-minute-second`產生的格式時間戳記。

如需 `image` 欄位的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[映像](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_image)。如需變數的詳細資訊，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

對應的 UI：組態索引標籤/**映像名稱**

## environment-variables
<a name="render.ecs.environment.variables"></a>

(*ECSRenderTaskDefinition*/Configuration/**environment-variables**)

(必要)

指定您希望**轉譯 Amazon ECS 任務定義**動作新增至任務定義檔案的環境變數。動作會將變數新增至任務定義檔案中的 `containerDefinitions`， `environment` 欄位。如果 檔案中已存在變數，動作會覆寫現有變數的值，並新增任何新變數。如需 Amazon ECS 環境變數的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[指定環境變數](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html)。

對應的 UI：組態索引標籤/**環境變數 - 選用**

## Outputs
<a name="render.ecs.outputs"></a>

(*ECSRenderTaskDefinition*/**Outputs**)

(必要)

定義 動作在工作流程執行期間輸出的資料。

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

## Artifacts
<a name="render.ecs.outputs.artifacts"></a>

(*ECSRenderTaskDefinition*/Outputs/**Artifacts**)

(必要)

指定 動作產生的成品。您可以在其他動作中參考這些成品做為輸入。

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

對應的 UI：輸出索引標籤/**成品**

## Name
<a name="render.ecs.outputs.artifacts.name"></a>

(*ECSRenderTaskDefinition*/Outputs/Artifacts/**Name**)

(必要)

指定將包含更新任務定義檔案的成品名稱。預設值為 `MyTaskDefinitionArtifact`。然後，您必須將此成品指定為**部署至 Amazon ECS **動作的輸入。若要了解如何將此成品新增為**部署至 Amazon ECS **動作的輸入，請參閱 [範例：修改 Amazon ECS taskdef](render-ecs-action-example-workflow.md)。

對應的 UI：輸出索引標籤/成品/**名稱**

## Files
<a name="render.ecs.outputs.artifacts.files"></a>

(*ECSRenderTaskDefinition*/Outputs/Artifacts/**Files**)

(必要)

指定要包含在成品中的檔案。您必須指定 ，`task-definition-*`以便`task-definition-`包含以 開頭的更新任務定義檔案。

對應的 UI：輸出索引標籤/成品/**檔案**

## Variables
<a name="render.ecs.outputs.variables"></a>

(*ECSRenderTaskDefinition*/Outputs/**Variables**)

(必要)

指定要由轉譯動作設定的變數名稱。轉譯動作會將此變數的值設定為已更新任務定義檔案的名稱 （例如 `task-definition-random-string.json`)。然後，您必須在**部署至 Amazon ECS** 動作**的任務定義** （視覺化編輯器） 或 `task-definition`(yaml 編輯器） 屬性中指定此變數。若要了解如何將此變數新增至**部署至 Amazon ECS **動作，請參閱 [範例：修改 Amazon ECS taskdef](render-ecs-action-example-workflow.md) 。

預設：`task-definition`

對應的 UI：輸出索引標籤/變數/**名稱**欄位