本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本節說明如何使用 CodeCatalyst 工作流程更新 Amazon Elastic Container Service (Amazon ECS) 任務定義檔案中image
的欄位。若要達成此目的,您必須將轉譯 Amazon ECS 任務定義動作新增至工作流程。此動作會使用工作流程在執行時間提供的 Docker 映像名稱,來更新任務定義檔案中的映像欄位。
注意
您也可以使用此動作,以環境變數更新任務定義的environment
欄位。
主題
何時使用此動作
如果您有建立具有動態內容的 Docker 映像並加上標籤的工作流程,例如遞交 ID 或時間戳記,請使用此選項。
如果您的任務定義檔案包含一律保持不變的影像值,請勿使用此動作。在這種情況下,您可以將映像的名稱手動輸入任務定義檔案中。
「轉譯 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 月映像上執行。如需詳細資訊,請參閱作用中映像。