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

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

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

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

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

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

注意

本主題說明 Amazon ECS對 CodeDeploy 藍/綠部署動作 CodePipeline。如需有關 Amazon ECS標準部署動作的參考資訊 CodePipeline,請參閱 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>預留位置文字,如此處所示

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 詳細資訊,請參閱 imageDetailAmazon ECS 藍/綠部署動作的 .json 檔案

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

    對於任務定義更新, 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" } ] }

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

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

    注意

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

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

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