View a markdown version of this page

更新您 Elastic Beanstalk 環境的平台版本 - AWS Elastic Beanstalk

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

更新您 Elastic Beanstalk 環境的平台版本

Elastic Beanstalk 會定期推出新的平台版本,更新所有以 Linux 和 Windows Server 為基礎的平台。新平台版本提供現有軟體元件的更新,並支援新的功能和組態選項。若要了解平台和平台版本,請參閱 Elastic Beanstalk 平台詞彙表。

您可以使用 Elastic Beanstalk 主控台或 EB CLI 來更新環境的平台版本。Elastic Beanstalk 會根據您要更新的目標平台版本,建議您使用下列兩種方法的其中一種來執行平台更新。

  • 方法 1 – 更新您環境的平台版本. 若您要在平台分支內更新到最新的平台版本,但不變更執行時間、Web 伺服器、應用程式伺服器和作業系統,也不變更主要平台版本,則我們建議您使用這個方法。這是最常見的例行平台更新。

  • 方法 2 – 執行藍/綠部署. 若您要在另一個平台分支內更新到最新的平台版本,而且要變更執行時間、Web 伺服器、應用程式伺服器或作業系統,還要變更主要平台版本,則我們建議您使用這個方法。當您想利用新的執行時間功能或最新的 Elastic Beanstalk 功能,或者當您想要移出已取代或已淘汰的平台分支時,這是一個很好的方法。

    從舊版平台進行遷移需要使用藍/綠部署,因為這些平台版本與目前支援的版本不相容。

    將 Linux 應用程式遷移至 Amazon Linux 2 需要使用藍/綠部署,因為 Amazon Linux 2 平台版本與舊版 Amazon Linux AMI 平台不相容。

如需選擇最佳平台更新方法的詳細說明,請展開您環境平台的區段。

使用方法 1 執行平台更新。

使用方法 1 執行平台更新。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他平台 (例如從 Go 1.4 (Docker) 遷移到 Go 1.11,或從 Python 3.4 (Docker) 遷移到 Python 3.6),請使用方法 2。

  • 如果您要將應用程式遷移到其他 Docker 容器版本 (例如從 Glassfish 4.1 (Docker) 遷移到 Glassfish 5.0 (Docker)),請使用方法 2。

  • 如果您要更新到最新的平台版本,不變更容器版本或主要版本,請使用方法 1。

使用方法 1 執行平台更新。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他 Java 執行時間版本 (例如從 Java 7 遷移到 Java 8),請使用方法 2。

  • 如果您要更新到最新平台版本,不變更執行時間版本,請使用方法 1。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他 Java 執行時間版本或 Tomcat 應用程式伺服器版本 (例如從搭配 Tomcat 7 的 Java 7 遷移到搭配 Tomcat 8.5 的 Java 8),請使用方法 2。

  • 如果您要將應用程式遷移到其他搭配 Tomcat 的主要 Java 平台版本 (1.x.x 版、2.x.x 版和 3.x.x 版),請使用方法 2。

  • 如果您要更新到最新的平台版本,不變更執行時間版本、應用程式伺服器版本或主要版本,請使用方法 1。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他 Windows 作業系統版本 (例如從 Windows Server 2008 R2 更新到 Windows Server 2016),請使用方法 2。

  • 如果您要將應用程式遷移到其他主要 Windows Server 平台版本,請參閱 從先前的 Windows Server 平台主要版本遷移,並使用方法 2。

  • 如果您的應用程式目前正在 Windows Server 平台 2.x.x 版上執行,且您要更新到最新的平台版本,請使用方法 1。

注意

並未在語意上建立第 2 版之前的 Windows Server 平台版本。您只能啟動每個 Windows Server 主要平台版本中的最新版本,且無法在升級之後轉返。

使用方法 2 執行平台更新。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他 PHP 執行時間版本 (例如從 PHP 5.6 遷移到 PHP 7.2),請使用方法 2。

  • 如果您要將應用程式遷移到其他主要 PHP 平台版本 (1.x.x 版和 2.x.x 版),請使用方法 2。

  • 如果您要更新到最新平台版本,不變更執行時間版本或主要版本,請使用方法 1。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他 Python 執行時間版本 (例如從 Python 2.7 遷移到 Python 3.6),請使用方法 2。

  • 如果您要將應用程式遷移到其他主要 Python 平台版本 (1.x.x 版和 2.x.x 版),請使用方法 2。

  • 如果您要更新到最新平台版本,不變更執行時間版本或主要版本,請使用方法 1。

請考慮下列情況:

  • 如果您要將應用程式遷移到其他 Ruby 執行時間版本或應用程式伺服器版本 (例如從搭配 Puma 的 Ruby 2.3 遷移到搭配 Puma 的 Ruby 2.6),請使用方法 2。

  • 如果您要將應用程式遷移到其他主要 Ruby 平台版本 (1.x.x 版和 2.x.x 版),請使用方法 2。

  • 如果您要更新到最新的平台版本,不變更執行時間版本、應用程式伺服器版本或主要版本,請使用方法 1。

方法 1 – 更新您環境的平台版本

使用此方式將您環境的平台分支更新到最新版本。如果您之前已使用較舊的平台版本建立環境或升級舊版環境,您也可以使用此方法來還原至先前的平台版本,前提是要在相同平台分支中。

若要更新您環境的平台版本
  1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

  3. 在環境概觀頁面的 Platform (平台) 下,選擇 Change (變更)。

    Elastic Beanstalk 推出較新的平台
  4. 在 Update platform version (更新平台版本) 對話方塊中,選取平台版本。系統會自動選取分支中的最新 (建議) 平台版本。您可以更新至過去使用過的任何版本。

    Elastic Beanstalk 更新平台版本確認
  5. 選擇 Save (儲存)。

Elastic Beanstalk 可協助您進一步簡化平台更新。您可將環境設定為在每週的可設定維護時段期間,自動套用次要及修補程式版本更新。Elastic Beanstalk 套用受管更新不需要停機時間,也不會降低容量,若執行應用程式的執行個體在新版本未通過運作狀態檢查,將會立即取消更新。如需詳細資訊,請參閱受管平台更新。

方法 2 – 執行藍/綠部署

使用此方法以使用不同的執行時間、Web 伺服器、應用程式伺服器或作業系統,更新至不同的平台分支,或不同的主要平台版本。若您要運用新的執行時間功能或最新的 Elastic Beanstalk 功能,一般必須採用此方法。當您移出已棄用或已淘汰的平台分支時,這也是必需的。

若您遷移到其他主要平台版本或具有重大元件更新的平台版本,整個應用程式或其中一部分的功能,很可能不會如預期地在新的平台版本上正常運作,因此可能需要執行變更。

執行遷移之前,請將本機開發機器更新到新的執行時間版本,並更新您想要遷移的其他平台元件。確認應用程式仍可以如預期地正常運作,並視需要修改程式碼及執行其他變更。然後使用以下最佳實務步驟,將您的環境安全地遷移到新的平台版本。

將您的環境遷移到具有重大更新的平台版本
  1. 建立新環境,使用新的目標平台版本,並將您的應用程式代碼部署到其中。新的環境應該在 Elastic Beanstalk 應用程式中,其中包含您正在遷移的環境。請勿終止現有的環境。

  2. 使用新環境遷移應用程式。尤其是:

    • 尋找您在開發階段中無法偵測到的應用程式相容性問題,並加以修復。

    • 確保所有透過組態檔案執行的應用程式自訂項目可以在新環境中正常運作。自訂項目可能包括選項設定、其他外安裝套件、自訂安全原則,以及安裝在環境執行個體上的指令碼或組態檔案。

    • 如果您的應用程式使用自訂的 Amazon Machine Image (AMI),請根據新平台版本的 AMI 建立新的自訂 AMI。如需進一步了解,請參閱在 Elastic Beanstalk 環境中使用自訂 Amazon 機器映像 (AMI)。如果您的應用程式使用具有自訂 AMI 的 Windows Server 平台,且您要遷移到 Windows Server V2 平台版本,您就必須執行這項操作。在這種情況中,請一併參閱從先前的 Windows Server 平台主要版本遷移。

    重複測試和部署您的修補程式,直到符合應用程式在新環境的需求

  3. 透過將其 CNAME 與現有的生產環境的 CNAME 交換,將新環境轉換到您的生產環境。如需詳細資訊,請參閱透過 Elastic Beanstalk 進行藍/綠部署。

  4. 當您滿意新環境的生產狀態,請終止舊環境。如需詳細資訊,請參閱終止 Elastic Beanstalk 環境。