選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考

焦點模式
Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

您可以在 中設定管道 AWS CodePipeline ,以使用藍/綠部署來部署容器應用程式。在藍/綠部署中,您可以啟動應用程式的新版本與舊版本,並在重新路由流量到新版本之前進行測試。您也可以監控部署程序,並在發生問題時快速轉返。

已完成的管道會偵測映像或任務定義檔案的變更,並使用 CodeDeploy 將流量路由和部署至 Amazon ECS 叢集和負載平衡器。CodeDeploy 會在您的負載平衡器上建立新的接聽程式,該接聽程式可以透過特殊連接埠將新任務設為目標。您也可以將管道設定為使用來源位置,例如 CodeCommit 儲存庫,其中存放您的 Amazon ECS 任務定義。

建立管道之前,您必須已建立 Amazon ECS 資源、CodeDeploy 資源,以及負載平衡器和目標群組。您必須已標記映像並將其儲存在映像儲存庫中,並將任務定義和 AppSpec 檔案上傳到您的檔案儲存庫。

注意

本主題說明 CodePipeline 的 Amazon ECS 至 CodeDeploy 藍/綠部署動作。如需 CodePipeline 中 Amazon ECS 標準部署動作的參考資訊,請參閱 Amazon Elastic Container Service 部署動作參考

動作類型

  • 類別:Deploy

  • 擁有者:AWS

  • 提供者:CodeDeployToECS

  • 版本:1

組態參數

ApplicationName

必要:是

CodeDeploy 中的應用程式名稱。建立管道之前,您必須先在 CodeDeploy 中建立應用程式。

DeploymentGroupName

必要:是

針對您為 CodeDeploy 應用程式建立的 Amazon ECS 任務集指定的部署群組。建立管道之前,您必須已在 CodeDeploy 中建立部署群組。

TaskDefinitionTemplateArtifact

必要:是

將任務定義檔案提供給部署動作的輸入成品名稱。這通常是來源動作的輸出成品名稱。當您使用 主控台時,來源動作輸出成品的預設名稱為 SourceArtifact

AppSpecTemplateArtifact

必要:是

將 AppSpec 檔案提供給部署動作的輸入成品名稱。當您的管道執行時,此值即會更新。這通常是來源動作的輸出成品名稱。當您使用 主控台時,來源動作輸出成品的預設名稱為 SourceArtifact。在 TaskDefinition AppSpec 檔案中,您可以保留<TASK_DEFINITION>預留位置文字,如下所示步驟 2:建立任務定義和 AppSpec 來源檔案,並推送至 CodeCommit 儲存庫

AppSpecTemplatePath

必要:否

存放在管道來源檔案位置的 AppSpec 檔案的檔案名稱,例如管道的 CodeCommit 儲存庫。預設檔案名稱為 appspec.yaml。如果您的 AppSpec 檔案具有相同的名稱,且存放在檔案儲存庫的根層級,則不需要提供檔案名稱。如果路徑不是預設值,請輸入路徑和檔案名稱。

TaskDefinitionTemplatePath

必要:否

存放在管道檔案來源位置的任務定義檔案名稱,例如管道的 CodeCommit 儲存庫。預設檔案名稱為 taskdef.json。如果您的任務定義檔案具有相同的名稱,且存放在檔案儲存庫的根層級,則不需要提供檔案名稱。如果路徑不是預設值,請輸入路徑和檔案名稱。

Image<Number>ArtifactName

必要:否

提供映像給部署動作的輸入成品名稱。這通常是影像儲存庫的輸出成品,例如來自 Amazon ECR 來源動作的輸出。

的可用值<Number>為 1 到 4。

Image<Number>ContainerName

必要:否

可從映像儲存庫取得的映像名稱,例如 Amazon ECR 來源儲存庫。

的可用值<Number>為 1 到 4。

Input artifacts (輸入成品)

  • 成品數量:1 to 5

  • 描述: CodeDeployToECS動作會先在來源檔案儲存庫中尋找任務定義檔案和 AppSpec 檔案,接著在映像儲存庫中尋找映像,然後動態產生任務定義的新修訂版,最後執行 AppSpec 命令,將任務集和容器部署到叢集。

    CodeDeployToECS 動作會尋找將映像 URI 映射至映像imageDetail.json的檔案。當您將變更遞交至 Amazon ECR 映像儲存庫時,管道 ECR 來源動作會為該遞交建立 imageDetail.json 檔案。您也可以手動為未自動化動作的管道新增 imageDetail.json 檔案。如需 imageDetail.json 詳細資訊,請參閱 Amazon ECS 藍/綠部署動作的 imageDetail.json 檔案

    CodeDeployToECS 動作會動態產生任務定義的新修訂。在此階段中,此動作會將任務定義檔案中的預留位置取代為從 imageDetail.json 檔案擷取的影像 URI。例如,如果您將 IMAGE1_NAME 設定為 Image1ContainerName 參數,則應在任務定義檔案中將預留位置 <IMAGE1_NAME> 指定為影像欄位的值。在此情況下,CodeDeployToECS 動作會將預留位置 <IMAGE1_NAME> 取代為您指定為 Image1ArtifactName 的成品中從 imageDetail.json 擷取的實際影像 URI。

    對於任務定義更新,CodeDeploy AppSpec.yaml 檔案包含 TaskDefinition 屬性。

    TaskDefinition: <TASK_DEFINITION>

    建立新任務定義後,CodeDeployToECS動作會更新此屬性。

    對於 TaskDefinition 欄位的值,預留位置文字必須是 <TASK_DEFINITION>。CodeDeployToECS 動作會將此預留位置取代為動態產生的任務定義的實際 ARN。

輸出成品

  • 成品數量:0

  • 描述:輸出成品不適用於此動作類型。

動作宣告

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables

以下相關資源可協助您使用此動作。

  • 教學課程:使用 Amazon ECR 來源和 ECS-to-CodeDeploy 部署建立管道 – 本教學課程會逐步引導您建立藍/綠部署所需的 CodeDeploy 和 Amazon ECS 資源。本教學課程說明如何將 Docker 映像推送至 Amazon ECR,並建立 Amazon ECS 任務定義,其中列出您的 Docker 映像名稱、容器名稱、Amazon ECS 服務名稱和負載平衡器組態。此教學課程接著會逐步引導您建立部署的 AppSpec 檔案和管道。

    注意

    本主題和教學課程說明 CodePipeline 的 CodeDeploy/ECS 藍色/綠色動作。如需 CodePipeline 中 ECS 標準動作的相關資訊,請參閱教學課程:使用 CodePipeline 持續部署

  • AWS CodeDeploy 使用者指南 – 如需如何在藍/綠部署中使用負載平衡器、生產接聽程式、目標群組和 Amazon ECS 應用程式的相關資訊,請參閱教學課程:部署 Amazon ECS 服務AWS CodeDeploy 使用者指南中的此參考資訊提供使用 Amazon ECS 和 進行藍/綠部署的概觀 AWS CodeDeploy。

  • Amazon Elastic Container Service 開發人員指南 – 如需有關使用 Docker 映像和容器、ECS 服務和叢集以及 ECS 任務集的資訊,請參閱什麼是 Amazon ECS?

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。