

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

# 更新您 Elastic Beanstalk 環境的平台版本
<a name="using-features.platform.upgrade"></a>

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

您可以使用 Elastic Beanstalk 主控台或 EB CLI 來更新環境的平台版本。Elastic Beanstalk 會根據您要更新的目標平台版本，建議您使用下列兩種方法的其中一種來執行平台更新。
+ [方法 1 – 更新您環境的平台版本](#using-features.platform.upgrade.config). 若您要在平台分支內更新到最新的平台版本，但不變更執行時間、Web 伺服器、應用程式伺服器和作業系統，也不變更主要平台版本，則我們建議您使用這個方法。這是最常見的例行平台更新。
+ [方法 2 – 執行藍/綠部署](#using-features.platform.upgrade.bluegreen). 若您要在另一個平台分支內更新到最新的平台版本，而且要變更執行時間、Web 伺服器、應用程式伺服器或作業系統，還要變更主要平台版本，則我們建議您使用這個方法。當您想利用新的執行時間功能或最新的 Elastic Beanstalk 功能，或者當您想要移出已取代或已淘汰的平台分支時，這是一個很好的方法。

  [從舊版平台進行遷移](using-features.migration.md)需要使用藍/綠部署，因為這些平台版本與目前支援的版本不相容。

  [將 Linux 應用程式遷移至 Amazon Linux 2](using-features.migration-al.md) 需要使用藍/綠部署，因為 Amazon Linux 2 平台版本與舊版 Amazon Linux AMI 平台不相容。

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

## Docker
<a name="using-features.platform.upgrade.docker-single"></a>

使用[方法 1](#using-features.platform.upgrade.config) 執行平台更新。

## 多容器 Docker
<a name="using-features.platform.upgrade.docker-multi"></a>

使用[方法 1](#using-features.platform.upgrade.config) 執行平台更新。

## 預先設定的 Docker
<a name="using-features.platform.upgrade.docker-preconfigured"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他平台 (例如從 *Go 1.4 (Docker)* 遷移到 *Go 1.11*，或從 *Python 3.4 (Docker)* 遷移到 *Python 3.6*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要將應用程式遷移到其他 Docker 容器版本 (例如從 *Glassfish 4.1 (Docker)* 遷移到 *Glassfish 5.0 (Docker)*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要更新到最新的平台版本，不變更容器版本或主要版本，請使用[方法 1](#using-features.platform.upgrade.config)。

## Go
<a name="using-features.platform.upgrade.go"></a>

使用[方法 1](#using-features.platform.upgrade.config) 執行平台更新。

## Java SE
<a name="using-features.platform.upgrade.java-se"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他 Java 執行時間版本 (例如從 *Java 7* 遷移到 *Java 8*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要更新到最新平台版本，不變更執行時間版本，請使用[方法 1](#using-features.platform.upgrade.config)。

## Java 搭配 Tomcat
<a name="using-features.platform.upgrade.java-tomcat"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他 Java 執行時間版本或 Tomcat 應用程式伺服器版本 (例如從*搭配 Tomcat 7 的 Java 7* 遷移到*搭配 Tomcat 8.5 的 Java 8*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要將應用程式遷移到其他搭配 Tomcat 的主要 Java 平台版本 (1.x.x 版、2.x.x 版和 3.x.x 版)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要更新到最新的平台版本，不變更執行時間版本、應用程式伺服器版本或主要版本，請使用[方法 1](#using-features.platform.upgrade.config)。

## Windows Server 上的 .NET 搭配 IIS
<a name="using-features.platform.upgrade.dotnet"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他 Windows 作業系統版本 (例如從 *Windows Server 2008 R2* 更新到 *Windows Server 2016*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要將應用程式遷移到其他主要 Windows Server 平台版本，請參閱 [從先前的 Windows Server 平台主要版本遷移](dotnet-v2migration.md#dotnet-v2migration.migration)，並使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您的應用程式目前正在 Windows Server 平台 2.x.x 版上執行，且您要更新到最新的平台版本，請使用[方法 1](#using-features.platform.upgrade.config)。

**注意**  
並未在語意上建立第 2 版之前的 [Windows Server 平台版本](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)。您只能啟動每個 Windows Server 主要平台版本中的最新版本，且無法在升級之後轉返。

## Node.js
<a name="using-features.platform.upgrade.nodejs"></a>

使用[方法 2](#using-features.platform.upgrade.bluegreen) 執行平台更新。

## PHP
<a name="using-features.platform.upgrade.php"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他 PHP 執行時間版本 (例如從 *PHP 5.6* 遷移到 *PHP 7.2*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要將應用程式遷移到其他主要 PHP 平台版本 (1.x.x 版和 2.x.x 版)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要更新到最新平台版本，不變更執行時間版本或主要版本，請使用[方法 1](#using-features.platform.upgrade.config)。

## Python
<a name="using-features.platform.upgrade.python"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他 Python 執行時間版本 (例如從 *Python 2.7* 遷移到 *Python 3.6*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要將應用程式遷移到其他主要 Python 平台版本 (1.x.x 版和 2.x.x 版)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要更新到最新平台版本，不變更執行時間版本或主要版本，請使用[方法 1](#using-features.platform.upgrade.config)。

## Ruby
<a name="using-features.platform.upgrade.ruby"></a>

請考慮下列情況：
+ 如果您要將應用程式遷移到其他 Ruby 執行時間版本或應用程式伺服器版本 (例如從*搭配 Puma 的 Ruby 2.3* 遷移到*搭配 Puma 的 Ruby 2.6*)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要將應用程式遷移到其他主要 Ruby 平台版本 (1.x.x 版和 2.x.x 版)，請使用[方法 2](#using-features.platform.upgrade.bluegreen)。
+ 如果您要更新到最新的平台版本，不變更執行時間版本、應用程式伺服器版本或主要版本，請使用[方法 1](#using-features.platform.upgrade.config)。

## 方法 1 – 更新您環境的平台版本
<a name="using-features.platform.upgrade.config"></a>

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

**若要更新您環境的平台版本**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

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

1. 在環境概觀頁面的 **Platform (平台)** 下，選擇 **Change (變更)**。  
![Elastic Beanstalk 推出較新的平台](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/environment-management-platform-change.png)

1. 在 **Update platform version (更新平台版本)** 對話方塊中，選取平台版本。系統會自動選取分支中的最新 (建議) 平台版本。您可以更新至過去使用過的任何版本。  
![Elastic Beanstalk 更新平台版本確認](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/environment-management-update-platform-version.png)

1. 選擇 **Save** (儲存)。

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

## 方法 2 – 執行藍/綠部署
<a name="using-features.platform.upgrade.bluegreen"></a>

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

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

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

**將您的環境遷移到具有重大更新的平台版本**

1. [建立新環境](using-features.environments.md)，使用新的目標平台版本，並將您的應用程式代碼部署到其中。新的環境應該在 Elastic Beanstalk 應用程式中，其中包含您正在遷移的環境。請勿終止現有的環境。

1. 使用新環境遷移應用程式。尤其是：
   + 尋找您在開發階段中無法偵測到的應用程式相容性問題，並加以修復。
   + 確保所有透過[組態檔案](ebextensions.md)執行的應用程式自訂項目可以在新環境中正常運作。自訂項目可能包括選項設定、其他外安裝套件、自訂安全原則，以及安裝在環境執行個體上的指令碼或組態檔案。
   + 如果您的應用程式使用自訂的 Amazon Machine Image (AMI)，請根據新平台版本的 AMI 建立新的自訂 AMI。如需進一步了解，請參閱[在 Elastic Beanstalk 環境中使用自訂 Amazon Machine Image (AMI)](using-features.customenv.md)。如果您的應用程式使用具有自訂 AMI 的 Windows Server 平台，且您要遷移到 Windows Server V2 平台版本，您就必須執行這項操作。在這種情況中，請一併參閱[從先前的 Windows Server 平台主要版本遷移](dotnet-v2migration.md#dotnet-v2migration.migration)。

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

1. 透過將其 CNAME 與現有的生產環境的 CNAME 交換，將新環境轉換到您的生產環境。如需詳細資訊，請參閱[透過 Elastic Beanstalk 進行藍/綠部署](using-features.CNAMESwap.md)。

1. 當您滿意新環境的生產狀態，請終止舊環境。如需詳細資訊，請參閱[終止 Elastic Beanstalk 環境](using-features.terminating.md)。