修改 Amazon ECS 任务定义 - Amazon CodeCatalyst

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

修改 Amazon ECS 任务定义

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

注意

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

何时使用此操作

如果您的工作流程使用动态内容(例如提交 ID 或时间戳)来构建 Docker 镜像并对其进行标记,请使用此方法。

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

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

您必须在工作流程中将 “渲染 Amazon” ECS 任务定义操作与 “构建” 和 “部署到亚马逊” 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. Render 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 } ] } ], ... }

    或者,您也可以让 Render 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 弹性容器服务开发人员指南中的指定环境变量

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

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

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