

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

# 了解如何開始使用 Elastic Beanstalk
<a name="GettingStarted"></a>

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

若要開始使用，建議您直接從主控台部署預先建置的範例應用程式。然後，您可以了解如何在本機開發並從 中的命令列部署[QuickStart：將 PHP 應用程式部署至 Elastic Beanstalk](php-quickstart.md)。

使用 Elastic Beanstalk 無需付費，但標準費用確實適用於您在本教學課程中建立 AWS 的資源，直到您在結束時將其刪除為止。總費用通常少於一美元。 如需如何將費用降至最低的資訊，請參閱 [AWS 免費方案](https://aws.amazon.com/free)。

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

預估持續時間：**35-45 分鐘**

![\[使用 Web 伺服器環境簡化 Elastic Beanstalk 應用程式的架構。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-gs-simple.png)


## 您將建置的內容
<a name="GettingStarted.CreateApp"></a>

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

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

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

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

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

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

## 步驟 1 - 建立應用程式
<a name="GettingStarted.CreateApp.Create"></a>

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

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

![\[Elastic Beanstalk 主控台的箭頭指向建立應用程式按鈕。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-gs-01-create-app.png)


**建立應用程式**



1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)。

1. 選擇**建立應用程式**。

1. 在 **Application name** (應用程式名稱) 中，輸入 **getting-started-app**。

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

**設定環境**

1. 在**環境資訊**中，針對**環境名稱**輸入：**gs-app-web-env**。

1. 針對**平台**，選擇 **PHP** 平台。

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

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

**建立或選取服務角色**

1. 如果您先前已建立**服務角色**，並想要選擇現有的角色，請從**服務角色**下拉式清單中選取值，然後略過這些步驟的其餘部分來建立服務角色。

1. 如果您沒有看到針對**服務角色**列出的任何值，或者您想要建立新的值，請繼續執行後續步驟。

1. 針對**服務角色**，選擇**建立角色**。

1. 針對**信任的實體類型**，請選擇 **AWS 服務**。

1. 針對**使用案例**，選擇 **Elastic Beanstalk – 環境**。

1. 選擇**下一步**。

1. 確認**許可政策**包含下列項目，然後選擇**下一步**：
   + `AWSElasticBeanstalkEnhancedHealth`
   + `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`

1. 選擇建**立角色**。

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

**建立或選取 EC2 執行個體描述檔**

1. 如果您先前已建立 **EC2 執行個體描述檔**，並想要選擇現有的描述檔，請從 **EC2 執行個體描述檔**下拉式清單中選取值，然後略過這些步驟的其餘部分來建立 EC2 執行個體描述檔。

1. 如果您沒有看到 **EC2 執行個體描述檔**列出的任何值，或想要建立新的值，請繼續執行後續步驟。

1. 選擇建**立角色**。

1. 針對**信任的實體類型**，請選擇 **AWS 服務**。

1. 針對**使用案例**，選擇** Elastic Beanstalk – 運算**。

1. 選擇**下一步**。

1. 確認**許可政策**包含下列項目，然後選擇**下一步**：
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

1. 選擇建**立角色**。

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

**完成設定和建立您的應用程式**

1. 略過 **EC2 金鑰對**。

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

1. 選擇**跳至檢閱**以移至數個選用步驟。

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

1. 在顯示選項摘要的**檢閱**頁面上，選擇**提交**。

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

## 步驟 2 - 部署您的應用程式
<a name="GettingStarted.CreateApp.AWSresources"></a>

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

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

![\[代表部署程序的說明性影像\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/process-external-input.png)


當您建立範例應用程式時，Elastic Beanstalk 會建立下列 資源：
+ **EC2 執行個體** – Amazon EC2 虛擬機器，設定為在您選取的平台上執行 Web 應用程式。

  每個平台都會執行一組不同的軟體、組態檔案和指令碼，以支援特定的語言版本、架構、Web 容器或其組合。大多數平台使用 Apache 或 nginx 做為反向代理，將 Web 流量轉送到您的 Web 應用程式、提供靜態資產，以及產生存取和錯誤日誌。您可以連線至 Amazon EC2 執行個體，以檢視組態和日誌。
+ **執行個體安全群組** – 將建立一個 Amazon EC2 安全群組，以允許連接埠 80 上的傳入請求，因此負載平衡器上的傳入流量可以到達您的 Web 應用程式。
+ **Amazon S3 儲存貯**體 – 原始程式碼、日誌和其他成品的儲存位置。
+ **Amazon CloudWatch 警示** – 會建立兩個 CloudWatch 警示來監控執行個體上的負載，並視需要向上或向下擴展。
+ **CloudFormation 堆疊** – Elastic Beanstalk 使用 CloudFormation 在您的環境中部署資源並進行組態變更。您可以在 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation)中檢視資源定義範本。
+  **網域名稱** – 路由至 Web 應用程式的網域名稱，格式為 ：`subdomain.region.elasticbeanstalk.com`。

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

![\[具有 Web 伺服器環境的 Elastic Beanstalk 應用程式的架構概觀。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-overview-web-only.png)


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

**您的應用程式已準備就緒！**  
看到應用程式運作狀態變更為 後**Ok**，您可以瀏覽至 Web 應用程式的網站。

## 步驟 3 - 探索 Elastic Beanstalk 環境
<a name="GettingStarted.Explore"></a>

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

**檢視環境和您的應用程式**

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

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

1. 選擇**前往環境**以瀏覽您的應用程式！

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

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

![\[範例 Elastic Beanstalk 應用程式的祝賀畫面說明範例。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-gs-launched-app.png)


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

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

![\[Elastic Beanstalk 主控台顯示啟動的環境。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-gs-console-environment.png)


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

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

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

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

各種索引標籤包含您環境的詳細資訊：
+ **事件** – 檢視 Elastic Beanstalk 服務和其他 服務在您環境中資源的資訊和錯誤訊息更新清單。
+ **運作**狀態 – 檢視執行您應用程式的 Amazon EC2 執行個體的狀態和詳細運作狀態資訊。
+ **Logs** (日誌) – 從您環境中的 Amazon EC2 擷取和下載日誌。您可以擷取完整的日誌或最近的活動。擷取到的日誌的可用時間為 15 分鐘。
+ **監控** – 檢視環境的統計資料，例如平均延遲和 CPU 使用率。
+ **警示** – 檢視和編輯針對環境指標設定的警示。
+ **受管更新** – 檢視即將進行和已完成的受管平台更新和執行個體替換的相關資訊。
+ **標籤** – 檢視和編輯套用至您環境的鍵/值對。

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

### 日誌故障診斷
<a name="GettingStarted.Troubleshooting"></a>

若要對意外行為或偵錯部署進行故障診斷，建議您檢查環境中的日誌。

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

**請求日誌 (Elastic Beanstalk 主控台）**

1. 在 Elastic Beanstalk 主控台中導覽至您的環境。

1. 選擇**日誌**索引標籤或左導覽，然後選擇**請求日誌**。

1. 選取**最後 100 行**。

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

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

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

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

1. 導覽至 IAM 主控台。

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

1. 選擇**新增許可**，然後選擇**連接政策**。

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

**使用 Session Manager 連線至 Amazon EC2**

1. 導覽至 Amazon EC2 主控台。

1. 選擇**執行個體**，然後選取您的`gs-app-web-env`執行個體。

1. 選擇**連線**，然後選擇**工作階段管理員**。

1. 選擇**連線**。

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

1. 執行 **bash** 命令。

1. 執行 **cd /var/log/nginx** 命令。

1. 執行 **tail -f access.log** 命令。

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

**恭喜，您已連線！**  
每次重新整理頁面時，您應該會在執行個體更新中看到日誌項目。

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

## 步驟 4 - 更新您的應用程式
<a name="GettingStarted.DeployApp"></a>

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

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

![\[說明性映像表示更新環境。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/redeploy-491854279.jpg)


**若要更新您的應用程式版本。**

1. 下載下列 PHP 範例應用程式：

   **PHP** – [php-v2.zip](samples/php-v2.zip)

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

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

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

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

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

1. 選擇**部署**。

 當 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 - 擴展您的應用程式
<a name="GettingStarted.EditConfig"></a>

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

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

![\[顯示您環境成長的說明圖。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/growth_532477598.jpg)


### 增加容量設定
<a name="GettingStarted.EditConfig.Edit"></a>

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

**變更環境的容量**

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

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

1. 在導覽窗格中，選擇**組態**。

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

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

1. 在**執行個體**列中，將**最小值**變更為 **2** ，將**最大值**變更為 **4**。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

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

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

### 驗證增加的容量
<a name="GettingStarted.EditConfig.Verify"></a>

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

**確認增加的容量**

1. 從標籤清單或左側導覽窗格中選擇**運作**狀態。

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

**您剛向上擴展了！**  
使用兩個 Amazon EC2 執行個體時，您的環境容量已加倍，只需要幾分鐘的時間。

## 清除 Elastic Beanstalk 環境
<a name="GettingStarted.Cleanup"></a>

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

![\[顯示刪除資源的說明圖。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-gs-cleanup_514078822.jpg)


**刪除應用程式和所有相關聯的資源**

1. 刪除所有的應用程式版本。

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

   1. 在導覽窗格中，選擇 **Applications (應用程式)**，然後選擇 **getting-started-app**。

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

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

   1. 選擇**動作**，然後選擇**刪除**。

   1. 打開 **Delete versions from Amazon S3 (從 Amazon S3 刪除版本)**。

   1. 選擇 **Delete (刪除)**，然後選擇 **Done (完成)**。

1. 終止環境。

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

   1. 選擇 **Actions (動作)**，然後選擇 **Terminate Environment (終止環境)**。

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

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

   1. 在導覽窗格中，選擇 **getting-started-app**。

   1. 選擇 **Actions (動作)**，然後選擇 **Delete application (刪除應用程式)**。

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

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

## 後續步驟
<a name="GettingStarted.NextSteps"></a>

若要了解如何使用**eb**命令列工具自動將程式碼部署到 Elastic Beanstalk，我們建議您繼續 [QuickStart：將 PHP 應用程式部署至 Elastic Beanstalk](php-quickstart.md)。

接著，您可能想要檢閱如何設定 HTTPS 連線，請參閱 [為您的 Elastic Beanstalk 環境設定 HTTPS](configuring-https.md)。