EC2/內部部署計算平台上的部署 - AWS CodeDeploy

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

EC2/內部部署計算平台上的部署

本主題提供使用 EC2 /內部部署計算平台的 CodeDeploy 部署元件和工作流程的相關資訊。如需藍/綠部署的資訊,請參閱藍/綠部署概述

EC2/內部部署計算平台上的部署元件

下圖顯示 EC2 /內 CodeDeploy 部部署計算平台上部署的元件。

EC2 /內 CodeDeploy 部部署計算平台上部署的元件。

EC2/內部部署計算平台上的部署工作流程

下圖顯示應用程式修訂部署中的重要步驟:

在應用程序修訂的部署的主要步驟。

這些步驟包括:

  1. 建立應用程式,並為其指定唯一識別您要部署的應用程式修訂版本和應用程式的運算平台的名稱。 CodeDeploy 在部署期間使用此名稱,以確保其參考正確的部署元件,例如部署群組、部署組態和應用程式修訂。如需詳細資訊,請參閱 建立應用程式 CodeDeploy

  2. 指定部署類型以及您要部署應用程式修訂的執行個體,來設定部署群組。就地部署會使用最新應用程式修訂來更新執行個體。藍/綠部署會使用負載平衡器來註冊部署群組的一組替換執行個體,並取消註冊原始執行個體。

    您可以指定套用至執行個體的標籤、Amazon EC2 Auto Scaling 群組名稱或兩者。

    如果您在部署群組中指定一組標記,則 CodeDeploy 會部署至少套用其中一個指定標記的執行個體。如果您指定兩個或多個標記群組,則只 CodeDeploy 會部署至符合每個標記群組準則的執行個體。如需詳細資訊,請參閱 Tagging Instances for Deployments

    在所有情況下,執行個體都必須設定為在部署中使用 (也就是說,它們必須加上標記或屬於 Amazon EC2 Auto Scaling 群組),並且已安裝並執行 CodeDeploy 代理程式。

    我們為您提供一個 AWS CloudFormation 範本,您可以使用這些範本快速設定基於 Amazon Linux 或 Windows 伺服器的 Amazon EC2 執行個體。我們也為您提供獨立 CodeDeploy 代理程式,以便您可以在 Amazon Linux、Ubuntu 伺服器、RHEL (RHEL) 或 Windows 伺服器執行個體上安裝它。如需詳細資訊,請參閱 建立部署群組 CodeDeploy

    您還可以指定下列選項:

    • Amazon SNS 通知。建立觸發器,在部署和執行個體中發生指定的事件 (例如成功或失敗事件) 時,傳送通知給 Amazon SNS 主題的訂閱者。如需詳細資訊,請參閱 Monitoring Deployments with Amazon SNS Event Notifications

    • 警示類型部署管理。實作 Amazon CloudWatch 警示監控,以在指標超過或低於中設定的閾值時停止部署 CloudWatch。

    • 自動部署轉返。設定部署,以在部署失敗或符合警示閾值時,自動轉返先前已知良好的修訂。

  3. 指定部署組態以指出應用程式修訂應同時部署至多少個執行個體,以及說明部署的成功和失敗狀況。如需詳細資訊,請參閱 View Deployment Configuration Details

  4. 將應用程式修訂版上傳到 Amazon S3 或 GitHub. 除了要部署的檔案以及在部署期間執行的任何指令碼之外,您還必須包含應用程式規格檔案 (AppSpec 檔案)。此檔案包含部署說明,例如,在何處將檔案複製至每個執行個體,以及何時執行部署指令碼。如需詳細資訊,請參閱 使用的應用程式修訂 CodeDeploy

  5. 將應用程式修訂部署至部署群組。部署群組中每個執行個體上的 CodeDeploy 代理程式會將您的應用程式修訂版從 Amazon S3 或複製 GitHub 到執行個體。然後, CodeDeploy 代理程式會解除封裝修訂,並使用該 AppSpec 檔案將檔案複製到指定的位置,並執行任何部署程序檔。如需詳細資訊,請參閱 使用建立部署 CodeDeploy

  6. 檢查部署結果。如需詳細資訊,請參閱 監控部署 CodeDeploy

  7. 重新部署修訂 如果您需要修復來源內容中的錯誤、以不同的順序執行部署指令碼,或處理失敗部署,會建議您這麼做。為此,請將修訂的來源內容、任何部署指令碼和 AppSpec 檔案重新捆綁到新的修訂版本中,然後將修訂版上傳到 Amazon S3 儲存貯體或 GitHub 儲存庫。然後將新的部署執行到具有新修訂的相同部署群組。如需詳細資訊,請參閱 使用建立部署 CodeDeploy

設定執行個體

您必須先設定執行個體,才能第一次部署應用程式修訂。如果應用程式修訂需要三部生產伺服器和兩部備份伺服器,您要啟動或使用五個執行個體。

手動佈建執行個體:

  1. 在執行個體上安裝 CodeDeploy 代理程式。 CodeDeploy 代理程式可以安裝在 Amazon Linux、Ubuntu 伺服器、RHEL 和視窗伺服器執行個體上。

  2. 如果您使用標記來識別部署群組中的執行個體,請啟用標記。 CodeDeploy 依賴標記來識別執行個體並將其分組到 CodeDeploy 部署群組中。雖然入門教學使用兩者,但是您只能使用索引鍵或值來定義部署群組的標籤。

  3. 使用附加 IAM 執行個體設定檔來啟動 Amazon EC2 執行個體。IAM 執行個體設定檔必須附加到 Amazon EC2 執行個體啟動時, CodeDeploy 代理程式才能驗證執行個體的身分。

  4. 建立服務角色。提供服務存取權, CodeDeploy 以便展開 AWS 帳戶中的標籤。

對於初始部署, AWS CloudFormation 範本會為您完成所有這些作業。它根據 Amazon Linux 或 Windows 伺服器建立和設定新的單一 Amazon EC2 執行個體,並且已安裝 CodeDeploy 代理程式。如需詳細資訊,請參閱 使用的例證 CodeDeploy

注意

對於藍/綠部署,您可以選擇在替換環境中使用已有的執行個體,或是讓您 CodeDeploy 佈建新的執行個體做為部署程序的一部分。

上傳應用程式修訂

將 AppSpec 檔案置於應用程式的來源內容資料夾結構中的根資料夾下方。如需詳細資訊,請參閱 Application Specification Files

將應用程式的來源內容資料夾結構綁定為封存檔案格式 (例如 zip、tar 或壓縮 tar)。將存檔檔案 (修訂版) 上傳到 Amazon S3 儲存貯體或 GitHub 儲存庫。

注意

視窗伺服器執行個體不支援 tar 和壓縮的 tar 封存檔案格式 (.tar 和 .tar.gz)。

建立應用程式和部署群組

CodeDeploy 部署群組會根據執行個體的標籤、Amazon EC2 Auto Scaling 群組名稱或兩者來識別執行個體集合。多個應用程式修訂可以部署至相同的執行個體。一個應用程式修訂可以部署至多個執行個體。

例如,您可以將 "Prod" 標籤新增至三部生產伺服器,並將 "Backup" 標籤新增至兩部備份伺服器。這兩個標記可用來在應用 CodeDeploy 程式中建立兩個不同的部署群組,讓您選擇哪一組伺服器 (或兩者) 應參與部署。

您可以在部署群組中使用多個標籤群組,將部署限制為較小的一組執行個體。如需相關資訊,請參閱Tagging Instances for Deployments

部署應用程式修訂

現在您已準備好從 Amazon S3 或 GitHub 部署群組部署應用程式修訂版。您可以使用 CodeDeploy 控制台或創建部署命令。您可以指定多個參數來控制部署 (包含修訂、部署群組和部署組態)。

更新您的申請

您可以對應用程式進行更新,然後使用 CodeDeploy 主控台或呼叫 create-deployment 命令來推送修訂。

已停止和失敗的部署

您可以使用 CodeDeploy 控制台或停止部署命令來停止部署。當您嘗試停止部署時,會發生下列三者之一:

  • 部署停止,而且操作傳回成功狀態。在此情況下,不需要在已停止部署的部署群組上執行其他部署生命週期事件。一些檔案可能已複製至部署群組中的一或多個執行個體,而且可能已在其上執行一些指令碼。

  • 此部署不會立即停止,而且操作傳回擱置中狀態。在此情況下,一些部署生命週期事件可能仍然在部署群組上執行。一些檔案可能已複製至部署群組中的一或多個執行個體,而且可能已在其上執行一些指令碼。擱置中操作完成之後,後續呼叫停止部署會傳回成功狀態。

  • 部署無法停止,而且操作傳回錯誤。如需詳細資訊,請參閱 AWS CodeDeploy API 參考中的ErrorInformation常見錯誤

失敗的部署可能導致已在部署群組的一或多個執行個體上執行某些部署生命週期事件,就像已停止的部署一樣。若要瞭解部署失敗的原因,您可以使用 CodeDeploy 主控台、呼叫get-deployment-instance指令,或分析失敗部署中的記錄檔資料。如需詳細資訊,請參閱 應用程式修訂和記錄檔清理檢視 CodeDeploy EC2/內部部署的記錄資料

重新部署和部署復原

CodeDeploy 透過將先前部署的修訂版重新部署 (做為新部署) 來實作復原。

您可以設定部署群組以在符合特定條件時自動轉返部署 (包含部署失敗或符合警示監控閾值時)。您也可以覆寫針對個別部署中部署群組所指定的轉返設定。

您也可以手動重新部署先前部署的修訂,以選擇轉返失敗部署。

在所有情況下,新的或轉返的部署會獲指派其專屬部署 ID。您可以在 CodeDeploy 主控台中檢視的部署清單會顯示哪些部署是自動部署的結果。

如需更多詳細資訊,請參閱 使用以下方式重新部署和復原部署 CodeDeploy