將應用程式部署至 Elastic Beanstalk 環境 - AWS Elastic Beanstalk

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

將應用程式部署至 Elastic Beanstalk 環境

您可以使用 AWS Elastic Beanstalk 主控台來上傳已更新的原始碼套件,並將其部署至您的 Elastic Beanstalk 環境,或重新部署之前上傳的版本。

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

Elastic Beanstalk 提供數個部署政策和設定。如需設定政策和其他設定的詳細資料,請參閱 部署政策和設定。下表列出支援這些項目的政策和環境類型。

支援的部署政策
部署政策 負載平衡環境 單一執行個體環境 舊式 Windows Server 環境†

一次全部

滾動

以額外批次進行滾動

固定

流量分割

是 (Application Load Balancer)

† 在此表格中,「舊式 Windows Server 環境」是一種使用 IIS 8.5 以前版本的 Windows Server 平台組態為基礎的環境。

警告

部署或更新期間,部分原則會取代所有執行個體。這會造成所有的累計 Amazon EC2 爆量餘額遺失。這發生的情況如下:

  • 執行個體更換啟用的受管平台更新

  • 不可變更新

  • 不可變更新或流量分割啟用的部署

選擇部署政策

為您的應用程式選擇正確的部署政策是數個考量事項的取捨過程,並取決於您的特定需求。部署政策和設定 頁面包含每個政策的詳細資訊,以及其中一些政策運作方式的詳細說明。

以下清單提供不同部署政策的摘要資訊,並新增相關的考量事項。

  • All at once (一次全部) - 最快速的部署方法。如果您可以接受短暫的服務中斷,且快速部署對您來說相當重要,便適合使用此部署政策。使用此方法,Elastic Beanstalk 會將新的應用程式版本部署到每個執行個體。然後,Web 代理或應用程式伺服器可能需要重新啟動。因此,您的應用程式可能會在短時間內無法供使用者使用 (或是可用性降低)。

  • Rolling (滾動) - 避免停機時間,並藉由拉長部署時間,將降低可用性的影響降至最低。如果您無法接受任何期間的完全服務中斷,便適合使用此部署政策。使用此方法,您的應用程式會一次部署一個批次的執行個體到您的環境。在整個部署期間您可以保留大部分的頻寬。

  • Rolling with additional batch (以額外批次進行滾動) - 相較於「Rolling」(滾動) 方法,將部署時間拉得更長,避免降低任何可用性。如果您必須在整個部署期間維持相同的頻寬,便適合使用此部署政策。使用此方法,Elastic Beanstalk 會啟動額外的執行個體批次,然後執行滾動部署。啟動額外的批次需要時間,並會確保在整個部署過程中保留相同的頻寬。

  • Immutable (不可變) - 較慢的部署方法,可確保您的新應用程式版本一律會部署到新的執行個體,而非更新現有的執行個體。在部署失敗時,其還具有快速且可安全轉返的額外優點。使用此方法,Elastic Beanstalk 會執行不可變的更新來部署您的應用程式。在不可變的更新作業中,您的環境會啟動第二個 Auto Scaling 群組,新舊版本此時同時為流量提供服務,直到新的執行個體通過運作狀態檢查。

  • Traffic splitting (流量分割) - Canary 測試部署方法。若您希望使用一部分的傳入流量測試您新應用程式版本的運作狀態,同時讓舊的應用程式版本繼續處理其餘流量,便適合使用此部署政策。

下表比較部署方法屬性。

部署方法
方法 部署失敗的影響 部署時間 零停機 DNS 未變更 轉返程序 程式碼部署至
一次全部 停機 Circular icon with a clock face, indicating time-related functionality or waiting period. 手動重新部署 現有執行個體
滾動 單一批次停止服務;失敗前即成功的任何批次,會執行新的應用程式版本 Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. 手動重新部署 現有執行個體
以額外批次進行滾動 若第一個批次即失敗,則影響極小;否則與 Rolling (滾動) 的程度相近 Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. 手動重新部署 新執行個體和現有執行個體
固定 極小 Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. 終止新的執行個體 新執行個體
流量分割 暫時受到影響的並路由至新版本的用戶端流量百分比 Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. †† 重新路由流量並終止新執行個體 新執行個體
藍/綠 極小 Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. Circular icon with a clock face, indicating time-related functionality or waiting period. 交換 URL 新執行個體

† 依批次大小而異。

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

部署新的應用程式版本

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

若要將新的應用程式版本部署至 Elastic Beanstalk 環境
  1. 開啟 Elastic Beanstalk 主控台,然後在 Regions (區域) 清單中選取您的 AWS 區域。

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

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 選擇 Upload and deploy (上傳並部署)

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

  5. 選擇 Deploy (部署)

重新部署舊版本

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

欲將現有應用程式版本部署至現有環境
  1. 開啟 Elastic Beanstalk 主控台,然後在 Regions (區域) 清單中選取您的 AWS 區域。

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

    注意

    如果您有許多應用程式,請使用搜尋列來篩選應用程式清單。

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

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

  5. 選擇 Actions (動作),然後選擇 Deploy (部署)

  6. 選取環境,然後選擇 Deploy (部署)

其他部署應用程式的方式

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

仰賴資源組態變更的部署,或仰賴無法與舊版本一同執行的新版本之部署,對此您可以啟動搭配新版本的新環境,並執行藍/綠部署的 CNAME 交換。