修改 Amazon ECS 任务定义 - Amazon CodeCatalyst

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

修改 Amazon ECS 任务定义

本节介绍如何使用 CodeCatalyst 工作流程更新亚马逊弹性容器服务 (Amazon ECS) 任务定义文件中的image字段。为此,您必须将渲染 Amazon ECS 任务定义操作添加到工作流。此操作使用工作流在运行时提供的 Docker 映像名称更新任务定义文件中的映像字段。

注意

您还可以通过此操作使用环境变量更新任务定义的 environment 字段。

何时使用此操作

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

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

“渲染 Amazon ECS 任务定义”操作的工作原理

您必须在工作流中将渲染 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

  2. 渲染 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 开发人员指南》中的指定环境变量

  3. 部署到 Amazon ECS 操作会将更新后的任务定义文件注册到 Amazon ECS。注册更新后的任务定义文件会将新映像 MyDockerImage:a37bd7e 部署到 Amazon ECS 中。

“渲染 Amazon ECS 任务定义”操作使用的运行时映像

渲染 Amazon ECS 任务定义操作在 2022 年 11 月版映像上运行。有关更多信息,请参阅 活动映像