修改 Amazon ECS 任务定义
此部分介绍如何使用 CodeCatalyst 工作流更新 Amazon Elastic Container Service(Amazon ECS)任务定义文件中的 image
字段。为此,您必须将渲染 Amazon ECS 任务定义操作添加到工作流。此操作使用工作流在运行时提供的 Docker 映像名称更新任务定义文件中的映像字段。
注意
您还可以通过此操作使用环境变量更新任务定义的 environment
字段。
主题
何时使用此操作
如果您的工作流使用动态内容(例如提交 ID 或时间戳)来构建和标记 Docker 映像,请使用此操作。
如果您的任务定义文件包含始终保持不变的映像值,请不要使用此操作。在这种情况下,您可以手动将映像名称输入任务定义文件中。
“渲染 Amazon ECS 任务定义”操作的工作原理
您必须在工作流中将渲染 Amazon ECS 任务定义操作与构建和部署到 Amazon ECS 操作结合使用。通过结合使用这些操作可实现以下目的:
-
构建操作会构建 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
-
渲染 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 开发人员指南》中的指定环境变量。
-
部署到 Amazon ECS 操作会将更新后的任务定义文件注册到 Amazon ECS。注册更新后的任务定义文件会将新映像
MyDockerImage:a37bd7e
部署到 Amazon ECS 中。
“渲染 Amazon ECS 任务定义”操作使用的运行时映像
渲染 Amazon ECS 任务定义操作在 2022 年 11 月版映像上运行。有关更多信息,请参阅活动映像。