

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

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

# “渲染 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：“输出”选项卡/变量/**名称**字段