

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

本节介绍如何使用 CodeCatalyst 工作流程更新亚马逊弹性容器服务 (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>

如果您的工作流使用动态内容（例如提交 ID 或时间戳）来构建和标记 Docker 映像，请使用此操作。

如果您的任务定义文件包含始终保持不变的映像值，请不要使用此操作。在这种情况下，您可以手动将映像名称输入任务定义文件中。

## “渲染 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 任务定义**操作以及构建和部署操作的完整工作流示例。该工作流旨在构建 Docker 映像并将其部署到 Amazon ECS 集群中。工作流包含以下按顺序运行的构造块：
+ **触发器** – 当您将更改推送到源存储库时，此触发器会自动启动工作流运行。有关触发器的更多信息，请参阅[使用触发器自动启动工作流运行](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. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择**可视化**。

1. 在左上角，选择 **\$1 操作**打开操作目录。

1. 从下拉列表中选择 A **mazon 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://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在左上角，选择 **\$1 操作**打开操作目录。

1. 从下拉列表中选择 A **mazon 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](deploy-action-ecs.md) 中的说明操作，将**部署到 Amazon ECS** 操作添加到工作流中。添加部署操作时，请执行以下操作：

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://codecatalyst.aws/](https://codecatalyst.aws/)。

   1. 选择您的项目。

   1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

   1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

   1. 选择包含已完成的渲染操作的运行。

1. 在工作流图表中，选择渲染操作。

1. 选择**输出**。

1. 选择**变量**。

1. 这将显示任务定义文件的名称。该名称类似于 `task-definition--259-0a2r7gxlTF5X-.json`。

**查看更新后的任务定义文件的内容**

1. 查找包含已完成的渲染操作的运行：

   1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

   1. 选择您的项目。

   1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

   1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

   1. 选择包含已完成的渲染操作的运行。

1. 在工作流运行中，在顶部的**可视化**和 **YAML** 旁边，选择**工作流输出**。

1. 在**构件**部分中，选择包含更新后的任务定义文件的构件旁边的**下载**。此构件的**生成者**列将设置为渲染操作的名称。

1. 打开 .zip 文件以查看任务定义 .json 文件。

# “渲染 Amazon ECS 任务定义”变量
<a name="render-ecs-action-variables"></a>

**渲染 Amazon ECS 任务定义**操作在运行时会生成并设置以下变量。这些变量被称为*预定义变量*。

有关在工作流中引用这些变量的信息，请参阅 [使用预定义变量](workflows-using-predefined-variables.md)。


| 键 | 值 | 
| --- | --- | 
|  task-definition  |  为已由**渲染 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`。

**对应的用户界面：工作流程图/ ECSRenderTaskDefinition \$1nn/ aws/ @v1 标签 ecs-render-task-definition**

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

(*ECSRenderTaskDefinition*/**DependsOn**)

（可选）

指定必须成功运行才能使该操作运行的操作、操作组或阶段门。

有关“依赖于”功能的更多信息，请参阅[顺序操作](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**)

（必需）

指定一系列 name/value 对，用于定义要提供给操作的输入变量。变量名称仅限字母数字字符（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 弹性容器注册表 (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：“输出”选项卡/变量/**名称**字段