本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
-
描述:輸出成品不適用於此動作類型。
動作宣告
另請參閱
以下相關資源可協助您使用此動作。
-
教學課程:使用 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?