修改 Amazon ECS 任务定义 - Amazon CodeCatalyst

修改 Amazon ECS 任务定义

此部分介绍如何使用 CodeCatalyst 工作流更新 Amazon Elastic Container Service(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 月版映像上运行。有关更多信息,请参阅活动映像