本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用工作流程修改 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 彈性容器服務開發人員指南中的指定環境變數。
-
「部署到 Amazon ECS」動作會向 Amazon ECS 註冊更新的任務定義檔案。註冊更新的任務定義檔案會將新映像部署
MyDockerImage:a37bd7e
到 Amazon ECS。