了解如何開始使用 Elastic Beanstalk - AWS Elastic Beanstalk

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

了解如何開始使用 Elastic Beanstalk

使用 Elastic Beanstalk,您可以部署、監控和擴展 Web 應用程式和服務。一般而言,您會在本機開發程式碼,然後將其部署到 Amazon EC2 伺服器執行個體。這些執行個體也稱為環境,可在可透過 AWS 主控台或命令列升級的平台上執行。

若要開始使用,建議您直接從主控台部署預先建置的範例應用程式。然後,您可以了解如何在本機開發並從 中的命令列部署QuickStart:將 PHP 應用程式部署至 Elastic Beanstalk

使用 Elastic Beanstalk 無需付費,但標準費用確實適用於您在本教學課程中建立 AWS 的資源,直到您最後將其刪除為止。總費用通常少於一美元。 如需如何將費用降至最低的資訊,請參閱 AWS 免費方案

完成本教學課程後,您將了解使用在 Amazon EC2 執行個體上執行的環境建立、設定、部署、更新和監控 Elastic Beanstalk 應用程式的基本概念。

預估持續時間:35-45 分鐘

使用 Web 伺服器環境簡化 Elastic Beanstalk 應用程式的架構。

您將建置的內容

您的第一個 Elastic Beanstalk 應用程式將由在 PHP 受管平台上執行 PHP 範例的單一 Amazon EC2 環境組成。

Elastic Beanstalk 應用程式

Elastic Beanstalk 應用程式是 Elastic Beanstalk 元件的容器,包括應用程式程式碼在由 Elastic Beanstalk 提供和管理的平台上執行的環境,或在您提供的自訂容器中執行的環境

環境

Elastic Beanstalk 環境是一起執行 AWS 的資源集合,包括 Amazon EC2 執行個體。當您建立環境時,Elastic Beanstalk 會將必要的資源佈建至 AWS 您的帳戶。

平台

平台是作業系統、程式設計語言執行時間、Web 伺服器、應用程式伺服器和其他 Elastic Beanstalk 元件的組合。Elastic Beanstalk 提供受管平台,您也可以在容器中提供自己的平台。

Elastic Beanstalk 支援各種程式設計語言、應用程式伺服器及 Docker 容器的平台。建立環境時,您必須選擇 平台。您可以升級平台,但無法變更環境的平台。

切換平台

如果您需要變更程式設計語言,則必須在不同平台上建立並切換到新環境。

步驟 1 - 建立應用程式

您將會使用 Create application (建立應用程式) 主控台精靈建立範例應用程式。它會建立 Elastic Beanstalk 應用程式,並在其中啟動環境。

提醒:環境是執行應用程式程式碼所需的 AWS 資源集合。

Elastic Beanstalk 主控台的箭頭指向建立應用程式按鈕。
建立應用程式

  1. 開啟 Elastic Beanstalk 主控台

  2. 選擇建立應用程式

  3. Application name (應用程式名稱) 中,輸入 getting-started-app

主控台提供六個步驟來建立應用程式和設定環境。在此快速入門中,您只需專注於前兩個步驟,然後您可以直接跳到檢閱和建立您的應用程式和環境。

設定環境
  1. 環境資訊中,針對環境名稱輸入:gs-app-web-env

  2. 針對平台,選擇 PHP 平台。

  3. 對於應用程式碼預設集,接受預設值 (範例應用程式單一執行個體),然後選擇下一步

設定服務存取

接下來,您需要兩個角色。服務角色可讓 Elastic Beanstalk 監控您的 EC2 執行個體,並升級您環境的平台。EC2 執行個體描述檔角色允許寫入日誌和與其他 服務互動等任務。

建立 服務角色
  1. 針對服務角色,選擇建立角色

  2. 針對信任的實體類型,請選擇 AWS 服務

  3. 針對使用案例,選擇 Elastic Beanstalk – 環境

  4. 選擇下一步

  5. 確認許可政策包含下列項目,然後選擇下一步

    • AWSElasticBeanstalkEnhancedHealth

    • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

  6. 選擇建立角色

  7. 返回設定服務存取索引標籤,重新整理清單,然後選取新建立的服務角色。

建立 EC2 執行個體描述檔
  1. 選擇建立角色

  2. 針對信任的實體類型,請選擇 AWS 服務

  3. 針對使用案例,選擇 Elastic Beanstalk – 運算

  4. 選擇下一步

  5. 確認許可政策包含下列項目,然後選擇下一步

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

  6. 選擇建立角色

  7. 返回設定服務存取索引標籤,重新整理清單,然後選取新建立的 EC2 執行個體描述檔。

完成設定和建立您的應用程式
  1. 略過 EC2 金鑰對

    我們會向您展示透過主控台連線至 Amazon EC2 執行個體的其他方式。

  2. 選擇略過以檢閱以移至數個選用步驟。

    選用步驟:聯網、資料庫、擴展參數、更新、監控和記錄的進階組態。

  3. 在顯示選擇摘要的檢閱頁面上,選擇提交

恭喜您!

您已建立應用程式並設定環境!現在您需要等待資源部署。

步驟 2 - 部署您的應用程式

當您建立應用程式時,Elastic Beanstalk 會為您設定環境。您只需要坐下來等待。

初始部署最多可能需要五分鐘的時間來建立資源。更新需要的時間較少,因為只有變更會部署到您的堆疊。

代表部署程序的說明性影像

當您建立範例應用程式時,Elastic Beanstalk 會建立下列 資源:

  • EC2 執行個體 – Amazon EC2 虛擬機器,設定為在您選取的平台上執行 Web 應用程式。

    每個平台都會執行一組不同的軟體、組態檔案和指令碼,以支援特定語言版本、架構、Web 容器或其組合。大多數平台使用 Apache 或 nginx 做為反向代理,將 Web 流量轉送到您的 Web 應用程式、提供靜態資產,以及產生存取和錯誤日誌。您可以連線至 Amazon EC2 執行個體以檢視組態和日誌。

  • 執行個體安全群組 – 將建立一個 Amazon EC2 安全群組,以允許連接埠 80 上的傳入請求,因此負載平衡器上的傳入流量可以到達您的 Web 應用程式。

  • Amazon S3 儲存貯體 – 原始程式碼、日誌和其他成品的儲存位置。

  • Amazon CloudWatch 警示 – 會建立兩個 CloudWatch 警示來監控執行個體上的負載,並視需要向上或向下擴展。

  • AWS CloudFormation 堆疊 – Elastic Beanstalk 使用 AWS CloudFormation 在您的環境中部署資源並進行組態變更。您可以在 AWS CloudFormation 主控台中檢視資源定義範本。

  • 網域名稱 – 路由至 Web 應用程式的網域名稱,格式為:subdomain.region.elasticbeanstalk.com

Elastic Beanstalk 會建立您的應用程式、啟動環境、製作應用程式版本,然後將程式碼部署到環境中。在此過程中,主控台會追蹤進度,並在事件索引標籤中顯示事件狀態。

具有 Web 伺服器環境的 Elastic Beanstalk 應用程式的架構概觀。

部署所有資源後,環境的運作狀態應變更為 Ok

您的應用程式已準備就緒!

看到應用程式運作狀態變更為 後Ok,您可以瀏覽至 Web 應用程式的網站。

步驟 3 - 探索 Elastic Beanstalk 環境

您將從 主控台的環境概觀頁面開始探索已部署的應用程式環境。

檢視環境和您的應用程式
  1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

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

  3. 選擇前往環境以瀏覽您的應用程式!

    (您也可以選擇為網域列出的 URL 連結來瀏覽您的應用程式。)

    連線將為 HTTP (而非 HTTPS),因此您可能會在瀏覽器中看到警告。

範例 Elastic Beanstalk 應用程式的恭喜畫面說明範例。

回到 Elastic Beanstalk 主控台,上方部分顯示環境概觀,其中包含您環境的最上層資訊,包括名稱、網域 URL、目前運作狀態、執行版本,以及應用程式執行所在的平台。執行中的版本和平台對於故障診斷您目前部署的應用程式至關重要。

在概觀窗格之後,您會在事件索引標籤中看到最近的環境活動。

Elastic Beanstalk 主控台顯示啟動的環境。

雖然 Elastic Beanstalk 會建立您的 AWS 資源並啟動您的應用程式,但環境處於 Pending 狀態。啟動事件的狀態訊息會持續新增至事件 清單。

環境的網域是已部署 Web 應用程式的 URL。在左側導覽窗格中,前往環境也會帶您前往您的網域。同樣地,左側導覽窗格具有對應於各種索引標籤的連結。

請記下左側導覽窗格中的組態連結。 會顯示環境組態選項值的摘要,依類別分組。

環境組態設定

請記下左側導覽窗格中的組態連結。您可以檢視和編輯詳細的環境設定,例如服務角色、聯網、資料庫、擴展、受管平台更新、記憶體、運作狀態監控、滾動部署、記錄等!

各種索引標籤包含您環境的詳細資訊:

  • 事件 – 檢視 Elastic Beanstalk 服務和其他 服務在您環境中資源的資訊和錯誤訊息更新清單。

  • 運作狀態 – 檢視執行您應用程式的 Amazon EC2 執行個體的狀態和詳細運作狀態資訊。

  • Logs (日誌) – 從您環境中的 Amazon EC2 擷取和下載日誌。您可以擷取完整的日誌或最近的活動。擷取到的日誌的可用時間為 15 分鐘。

  • 監控 – 檢視環境的統計資料,例如平均延遲和 CPU 使用率。

  • 警示 – 檢視和編輯針對環境指標設定的警示。

  • 受管更新 – 檢視即將進行和已完成的受管平台更新和執行個體替換的相關資訊。

  • 標籤 – 檢視和編輯套用至您環境的鍵值對。

注意

主控台導覽窗格中的連結會顯示對應的標籤。

日誌故障診斷

若要對意外行為或偵錯部署進行疑難排解,建議您檢查環境中的日誌。

您可以在 Elastic Beanstalk 主控台的日誌索引標籤下請求 100 行的所有日誌檔案。或者,您可以直接連接到 Amazon EC2 執行個體,並即時結尾日誌。

請求日誌 (Elastic Beanstalk 主控台)
  1. 在 Elastic Beanstalk 主控台中導覽至您的環境。

  2. 選擇日誌索引標籤或左導覽,然後選擇請求日誌

  3. 選取最後 100 行

  4. 建立日誌之後,請選擇下載連結以在瀏覽器中檢視日誌。

在日誌中,尋找日誌並記下 nginx 存取日誌的目錄。

新增政策以啟用與 Amazon EC2 的連線

您必須先新增啟用使用 Session Manager 連線至 Amazon EC2 的政策,才能連線。

  1. 導覽至 IAM 主控台。

  2. 尋找並選取aws-elasticbeanstalk-ec2-role角色。

  3. 選擇新增許可,然後選擇連接政策

  4. 搜尋以下列文字開頭的預設政策AmazonSSMManagedEC2Instance,然後將其新增至角色。

使用 Session Manager 連線至 Amazon EC2
  1. 導覽至 Amazon EC2 主控台。

  2. 選擇執行個體,然後選取您的gs-app-web-env執行個體。

  3. 選擇連線,然後選擇工作階段管理員

  4. 選擇連線

連線至執行個體後,啟動 bash shell 並結尾日誌:

  1. 執行 bash 命令。

  2. 執行 cd /var/log/nginx 命令。

  3. 執行 tail -f access.log 命令。

  4. 在瀏覽器中,前往應用程式網域 URL。重新整理。

恭喜,您已連線!

每次重新整理頁面時,您應該會在執行個體更新中看到日誌項目。

連線按鈕無法運作?

如果連線按鈕無法使用,請返回 IAM 並確認您已將必要的政策新增至角色。

步驟 4 - 更新您的應用程式

最後,您會想要更新您的應用程式。只要您的環境中沒有其他正在進行的更新操作,您隨時都可以部署新版本。

啟動本教學的應用程式版本稱為 Sample Application

說明性映像表示更新環境。
若要更新您的應用程式版本。
  1. 下載下列 PHP 範例應用程式:

    PHPphp-v2.zip

  2. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

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

  4. 在環境概觀頁面上,選擇 Upload and deploy (上傳和部署)。

  5. 選取選擇檔案,然後上傳您下載的範例應用程式原始碼套件。

    主控台會自動在版本標籤中填入新的唯一標籤,並自動遞增結尾整數。如果您選擇自己的版本標籤,請確定其是唯一的。

  6. 選擇部署

當 Elastic Beanstalk 將您的檔案部署到您的 Amazon EC2 執行個體時,您可以在環境概觀頁面上檢視部署狀態。應用程式版本更新時,環境運作狀態為灰色。部署完成時,Elastic Beanstalk 會執行應用程式運作狀態檢查。當應用程式回應運作狀態檢查時,會視為狀態良好並回到綠色狀態。環境概觀會顯示新的 Running Version (正在執行的版本) — 這是您提供做為 Version label (版本標籤) 的名稱。

Elastic Beanstalk 也會上傳您的新應用程式版本,並將它新增到應用程式版本的資料表中。若要檢視表格,請選擇導覽窗格中 getting-started-app 之下的 Application versions (應用程式版本)。

更新成功!

重新整理瀏覽器後,您應該會看到更新的「v2」訊息。

如果您想要自行編輯來源,請解壓縮、編輯,然後重新壓縮來源套件。在 macOS 上,從 php 目錄中使用下列命令搭配 -X 來排除額外的檔案屬性:

zip -X -r ../php-v2.zip .

步驟 5 - 擴展您的應用程式

您可以設定環境,使它更切合您的應用程式。例如,如果您有運算密集型的應用程式,可以針對執行您應用程式的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,來變更其類型。為了套用組態變更,Elastic Beanstalk 會執行環境更新。

有些組態變更的操作簡單而且快速。有些變更需要刪除和重新建立 AWS 資源,這可能需要幾分鐘的時間。當您變更組態設定時,Elastic Beanstalk 會警告您可能的應用程式停機時間。

顯示您環境成長的說明圖。

增加容量設定

在此組態變更範例中,您會編輯您環境的容量設定。您設定一個負載平衡、可擴展的環境,在其 Auto Scaling 群組中有介於兩個與四個間的 Amazon EC2 執行個體,然後確認變更已生效。Elastic Beanstalk 會建立額外的 Amazon EC2 執行個體,並新增至最初建立的單一執行個體。然後,Elastic Beanstalk 將這兩個執行個體與環境負載平衡器產生關聯。最後,改善應用程式的回應能力,且時提升可用性。

變更環境的容量
  1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

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

  3. 在導覽窗格中,選擇組態

  4. Instance traffic and scaling (執行個體流量和擴展) 組態類別中,選擇 Edit (編輯)。

  5. 收合 Instances (執行個體) 區段,以便更輕鬆地查看 Capacity (容量) 區段。在 Auto Scaling group (Auto Scaling 群組) 中,將 Environment type (環境類型) 變更為 Load balanced (負載平衡)。

  6. 執行個體列中,將最小值變更為 2 ,將最大值變更為 4

  7. 若要儲存變更,請選擇頁面底部的儲存變更

    如果您收到警告,表示更新將取代所有目前的執行個體。選擇確認

環境更新可能需要幾分鐘的時間。您應該會在事件清單中看到數個更新。請留意 事件 成功將新組態部署到環境

驗證增加的容量

環境更新完成且環境就緒後,Elastic Beanstalk 會自動啟動第二個執行個體,以符合新的最小容量設定。

確認增加的容量
  1. 從標籤清單或左側導覽窗格中選擇運作狀態。

  2. 檢閱增強型執行個體運作狀態區段。

您剛向上擴展了!

使用兩個 Amazon EC2 執行個體時,您的環境容量已加倍,只需要幾分鐘的時間。

清除 Elastic Beanstalk 環境

為了確保您不需要為未使用的任何服務付費,請刪除所有應用程式版本並終止環境,這也會刪除環境為您建立 AWS 的資源。

顯示刪除資源的說明圖。
刪除應用程式和所有相關聯的資源
  1. 刪除所有的應用程式版本。

    1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

    2. 在導覽窗格中,選擇 Applications (應用程式),然後選擇 getting-started-app

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

    4. Application versions (應用程式版本) 頁面上,選取想要刪除的所有應用程式版本。

    5. 選擇動作,然後選擇刪除

    6. 打開 Delete versions from Amazon S3 (從 Amazon S3 刪除版本)

    7. 選擇 Delete (刪除),然後選擇 Done (完成)

  2. 終止環境。

    1. 在導覽窗格中,選擇 getting-started-app,然後在環境清單中選擇 GettingStartedApp-env

    2. 選擇 Actions (動作),然後選擇 Terminate Environment (終止環境)

    3. 輸入環境名稱,確認您要終止 GettingStartedApp-env,然後選擇 Terminate (終止)。

  3. 刪除 getting-started-app 應用程式。

    1. 在導覽窗格中,選擇 getting-started-app

    2. 選擇 Actions (動作),然後選擇 Delete application (刪除應用程式)

    3. 輸入應用程式名稱,確認您要刪除 getting-started-app,然後選擇 Delete (刪除)。

恭喜您!

您已成功將範例應用程式部署至 AWS 雲端、上傳新版本、修改其組態以新增第二個 Auto Scaling 執行個體,並清理您的 AWS 資源!

後續步驟

若要了解如何使用eb命令列工具自動將程式碼部署到 Elastic Beanstalk,我們建議您繼續 QuickStart:將 PHP 應用程式部署至 Elastic Beanstalk

接著,您可能想要檢閱如何設定 HTTPS 連線,請參閱 為您的 Elastic Beanstalk 環境設定 HTTPS