使用工作流程修改 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 彈性容器服務開發人員指南中的指定環境變數。

  3. 「部署到 Amazon ECS」動作會向 Amazon ECS 註冊更新的任務定義檔案。註冊更新的任務定義檔案會將新映像部署MyDockerImage:a37bd7e到 Amazon ECS。