

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

# 將應用程式部署至 Elastic Beanstalk 環境
<a name="using-features.deploy-existing-version"></a>

您可以使用 AWS Elastic Beanstalk 主控台上傳更新的[原始碼套件](applications-sourcebundle.md)，並將其部署到您的 Elastic Beanstalk 環境，或重新部署先前上傳的版本。

各個部署都能以部署 ID 識別。部署 ID 起始為 `1`，每次進行部署和變更執行個體組態時，累加 1。若啟用[增強型運作狀態報告](health-enhanced.md)，Elastic Beanstalk 會在報告執行個體運作狀態時，在[運作狀態主控台](health-enhanced-console.md)和 [EB CLI](health-enhanced-ebcli.md) 顯示部署 ID。部署 ID 可協助您於滾動更新失敗時，判斷環境的狀態。

Elastic Beanstalk 提供數個部署政策和設定。如需設定政策和其他設定的詳細資料，請參閱 [部署政策和設定](using-features.rolling-version-deploy.md)。下表列出支援這些項目的政策和環境類型。


**支援的部署政策**  

| 部署政策 | 負載平衡環境 | 單一執行個體環境 | 舊式 Windows Server 環境† | 
| --- | --- | --- | --- | 
| **一次全部** |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 
| **滾動** |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 
| **以額外批次進行滾動** |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 | 
| **固定** |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 | 
| **流量分割** |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 (Application Load Balancer) |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 | 

† 在此表格中，「舊式 Windows Server 環境」**是一種使用 IIS 8.5 以前版本的 [Windows Server 平台組態](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)為基礎的環境。

**警告**  
部署或更新期間，部分原則會取代所有執行個體。這會造成所有的累計 [Amazon EC2 爆量餘額](https://docs.aws.amazon.com/AWSEC2/latest/DeveloperGuide/burstable-performance-instances.html)遺失。這發生的情況如下：  
執行個體更換啟用的受管平台更新
不可變更新
不可變更新或流量分割啟用的部署

## 選擇部署政策
<a name="deployments-scenarios"></a>

為您的應用程式選擇正確的部署政策是數個考量事項的取捨過程，並取決於您的特定需求。[部署政策和設定](using-features.rolling-version-deploy.md) 頁面包含每個政策的詳細資訊，以及其中一些政策運作方式的詳細說明。

以下清單提供不同部署政策的摘要資訊，並新增相關的考量事項。
+ **All at once (一次全部)** - 最快速的部署方法。如果您可以接受短暫的服務中斷，且快速部署對您來說相當重要，便適合使用此部署政策。使用此方法，Elastic Beanstalk 會將新的應用程式版本部署到每個執行個體。然後，Web 代理或應用程式伺服器可能需要重新啟動。因此，您的應用程式可能會在短時間內無法供使用者使用 (或是可用性降低)。
+ **Rolling (滾動)** - 避免停機時間，並藉由拉長部署時間，將降低可用性的影響降至最低。如果您無法接受任何期間的完全服務中斷，便適合使用此部署政策。使用此方法，您的應用程式會一次部署一個批次的執行個體到您的環境。在整個部署期間您可以保留大部分的頻寬。
+ **Rolling with additional batch (以額外批次進行滾動)** - 相較於「Rolling」(滾動)** 方法，將部署時間拉得更長，避免降低任何可用性。如果您必須在整個部署期間維持相同的頻寬，便適合使用此部署政策。使用此方法，Elastic Beanstalk 會啟動額外的執行個體批次，然後執行滾動部署。啟動額外的批次需要時間，並會確保在整個部署過程中保留相同的頻寬。
+ **Immutable (不可變)** - 較慢的部署方法，可確保您的新應用程式版本一律會部署到新的執行個體，而非更新現有的執行個體。在部署失敗時，其還具有快速且可安全轉返的額外優點。使用此方法，Elastic Beanstalk 會執行[不可變的更新](environmentmgmt-updates-immutable.md)來部署您的應用程式。在不可變的更新作業中，您的環境會啟動第二個 Auto Scaling 群組，新舊版本此時同時為流量提供服務，直到新的執行個體通過運作狀態檢查。
+ **Traffic splitting (流量分割)** - Canary 測試部署方法。若您希望使用一部分的傳入流量測試您新應用程式版本的運作狀態，同時讓舊的應用程式版本繼續處理其餘流量，便適合使用此部署政策。

下表比較部署方法屬性。


**部署方法**  

| **方法** | **部署失敗的影響** | **部署時間** | **零停機** | **DNS 未變更** | **轉返程序** | **程式碼部署至** | 
| --- | --- | --- | --- | --- | --- | --- | 
| 一次全部 | 停機 | ![Deployment time: 1 of 4 (fastest).](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png) |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 手動重新部署 | 現有執行個體 | 
| 滾動 | 單一批次停止服務；失敗前即成功的任何批次，會執行新的應用程式版本 | ![Deployment time: 2 of 4 (moderate).](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)† |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 手動重新部署 | 現有執行個體 | 
| 以額外批次進行滾動 | 若第一個批次即失敗，則影響極小；否則與 Rolling (滾動) 的程度相近 | ![Deployment time: 3 of 4 (slower).](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)† |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 手動重新部署 | 新執行個體和現有執行個體 | 
| 固定 | 極小 | ![Deployment time: 4 of 4 (slowest).](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png) |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 終止新的執行個體 | 新執行個體 | 
| 流量分割 | 暫時受到影響的並路由至新版本的用戶端流量百分比 | ![Deployment time: 4 of 4 (slowest).](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)†† |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 | 重新路由流量並終止新執行個體 | 新執行個體 | 
| 藍/綠 | 極小 | ![Deployment time: 4 of 4 (slowest).](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png)![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/clock.png) |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是 |  ![](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否 | 交換 URL | 新執行個體 | 

† 依批次大小而異。**

†† 會根據**評估時間**選項設定而異。**

## 部署新的應用程式版本
<a name="deployments-newversion"></a>

您可以從環境的儀表板執行部署。

**若要將新的應用程式版本部署至 Elastic Beanstalk 環境**

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

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

1. 選擇 **Upload and deploy (上傳並部署)**。

1. 使用畫面顯示表單來上傳應用程式的原始碼套件。

1. 選擇 **Deploy (部署)**。

## 重新部署舊版本
<a name="deployments-existingversion"></a>

您亦可自應用程式版本頁面，將之前已上傳的應用程式舊版本部署至任何環境。

**欲將現有應用程式版本部署至現有環境**

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

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 在導覽窗格中，找到應用程式名稱並選擇 **Application versions (應用程式版本)**。

1. 選取要部署的 application version (應用程式版本)。

1. 選擇 **Actions (動作)**，然後選擇 **Deploy (部署)**。

1. 選取環境，然後選擇 **Deploy (部署)**。

## 其他部署應用程式的方式
<a name="deployments-other"></a>

若您經常部署，請考慮使用 [Elastic Beanstalk 命令列界面](eb-cli3.md) (EB CLI) 來管理您的環境。EB CLI 會在您的來源碼旁建立儲存庫。其也可以建立原始碼套件，將其上傳至 Elastic Beanstalk，並使用單一命令進行部署。

仰賴資源組態變更的部署，或仰賴無法與舊版本一同執行的新版本之部署，對此您可以啟動搭配新版本的新環境，並執行[藍/綠部署](using-features.CNAMESwap.md)的 CNAME 交換。

若要自動化建置、測試和部署程序，您可以使用 Elastic Beanstalk 環境實作持續整合和持續部署 (CI/CD)。如需詳細資訊，請參閱[實作與 Elastic Beanstalk 環境的 CI/CD 整合](deployments.cicd.md)。