

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

# 將傳統 ASP.NET 應用程式部署至 Elastic Beanstalk
<a name="deployment-beanstalk-traditional"></a>

本節說明如何使用 Toolkit for Visual Studio 提供的 **Publish to Elastic Beanstalk** 精靈，透過 Elastic Beanstalk 部署應用程式。若要練習，您可以使用內建於 Visual Studio 的 Web 應用程式入門專案執行個體，也可以使用自己的專案。

**注意**  
精靈也支援部署 ASP.NET Core 應用程式。如需 ASP.NET Core 的詳細資訊，請參閱 [AWS .NET 部署工具](https://aws.github.io/aws-dotnet-deploy/)指南和更新的[部署至 AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-chapt.html)目錄。

**注意**  
您必須先下載並安裝 [Web Deploy](http://www.microsoft.com/en-us/download/details.aspx?id=39277)，才能使用 **Publish to Elastic Beanstalk** 精靈。精靈依賴 Web Deploy 將 Web 應用程式和網站部署到網際網路資訊服務 (IIS) Web 伺服器。

## 建立範例 Web 應用程式啟動者專案
<a name="to-create-a-sample-web-application-starter-project"></a>

1. 在 Visual Studio 中，從**檔案**功能表中，選擇**新增**，然後選擇**專案**。

1. 在 **New Project (新增專案)** 對話方塊的導覽窗格中，展開 **Installed (已安裝)**、展開 **Templates (範本)**，展開 **Visual C\$1**，然後選擇 **Web**。

1. 在 Web 專案範本的清單中，選擇其描述中包含文字 `Web` 和 `Application` 的任何範本。在此範例中，選擇 **ASP.NET Web Forms 應用程式**。  
![\[New Project window showing ASP.NET web application templates for Visual C# in .NET Framework 4.5.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-new-web-project-console.png)

1. 在 **Name (名稱)** 方塊中，輸入 `AEBWebAppDemo`。

1. 在**位置**方塊中，輸入開發機器上解決方案資料夾的路徑，或選擇**瀏覽**，然後瀏覽並選擇解決方案資料夾，然後選擇**選取資料夾**。

1. 確認已選取 **Create directory for solution (為方案建立目錄)** 方塊。在**解決方案**下拉式清單中，確認已選取**建立新解決方案**，然後選擇**確定**。Visual Studio 將根據 ASP.NET Web Forms 應用程式專案範本建立解決方案和專案。然後，Visual Studio 會顯示新解決方案和專案出現的位置。  
![\[Solution Explorer window showing project structure with folders and files for a web application.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-web-app-solution-explorer-console.png)

## 使用發佈至 Elastic Beanstalk 精靈部署應用程式
<a name="to-deploy-an-application-by-using-the-publish-to-elastic-beanstalk-wizard"></a>

1. 在解決方案總管中，開啟您在上一節中建立之專案的 **AEBWebAppDemo** 專案資料夾內容 （按一下滑鼠右鍵） 選單，或開啟您自己應用程式之專案資料夾的內容選單，然後選擇**發佈至 AWS Elastic Beanstalk**。  
![\[Solution Explorer context menu showing "Publish to AWS..." option for AEBWebAppDemo project.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-publish-to-aws-console.png)

   **Publish to Elastic Beanstalk (發佈至 Elastic Beanstalk)** 精靈隨即顯示。  
![\[Publish to AWS Elastic Beanstalk wizard interface for creating or redeploying an application environment.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-console.png)

1. 在**設定檔**中，從**用於部署的帳戶設定檔**下拉式清單中，選擇您要用於部署 AWS 的帳戶設定檔。

   或者，如果您有要使用 AWS 的帳戶，但尚未為其建立 AWS 帳戶設定檔，您可以選擇帶有加號 (`+`) 的按鈕來新增 AWS 帳戶設定檔。

1. 從**區域**下拉式清單中，選擇您希望 Elastic Beanstalk 部署應用程式的區域。

1. 在**部署目標**中，您可以選擇**建立新的應用程式環境**以執行應用程式的初始部署，或**重新部署至現有環境**以重新部署先前部署的應用程式。（先前的部署可能已使用精靈或已棄用的獨立部署工具來執行。) 如果您選擇**重新部署到現有環境**，精靈從目前正在執行的先前部署擷取資訊時，可能會有延遲。
**注意**  
如果您選擇**重新部署至現有環境**，請在清單中選擇環境，然後選擇**下一步**，精靈會直接帶您前往**應用程式選項**頁面。如果您前往此路由，請跳到本節稍後說明如何使用**應用程式選項**頁面的指示。

1. 選擇**下一步**。  
![\[Application Environment setup page for AWS with fields for name, environment, and URL.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-env-console.png)

1. 在**應用程式環境**頁面上，在**應用程式**區域中，**名稱**下拉式清單會提議應用程式的預設名稱。您可以從下拉式清單中選擇不同的名稱來變更預設名稱。

1. 在**環境**區域中的名稱****下拉式清單中，輸入 Elastic Beanstalk 環境的名稱。在這種情況下，*環境*一詞是指您應用程式的基礎設施 Elastic Beanstalk 佈建。在此下拉式清單中可能已建議預設名稱。如果尚未提議預設名稱，您可以在有任何其他名稱可用時，輸入一個名稱或從下拉式清單中選擇一個名稱。環境名稱不能超過 23 個字元。

1. 在 **URL** 區域中，方塊提議的預設子網域 `.elasticbeanstalk.com` 將是 Web 應用程式的 URL。您可以輸入新的子網域名稱來變更預設子網域。

1. 選擇**檢查可用性**，以確保您 Web 應用程式的 URL 尚未使用。

1. 如果 Web 應用程式的 URL 可以使用，請選擇**下一步**。

![\[AWS EC2 launch configuration settings for deploying an application to Amazon Web Services.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-ec2-console.png)


1. 在**AWS 選項**頁面的 **Amazon EC2 啟動組態**中，從**容器類型**下拉式清單中選擇將用於應用程式的 Amazon Machine Image (AMI) 類型。

1. 在**執行個體類型**下拉式清單中，指定要使用的 Amazon EC2 執行個體類型。在此範例中，我們建議您使用 **Micro**。這將最大限度地減少與執行執行個體相關聯的成本。如需 Amazon EC2 成本的詳細資訊，請前往 [EC2 定價](https://aws.amazon.com/ec2/pricing/)頁面。

1. 在**金鑰對**下拉式清單中，選擇要用於登入應用程式所用執行個體的 Amazon EC2 執行個體金鑰對。

1. 或者，在**使用自訂 AMI** 方塊中，您可以指定自訂 AMI，以覆寫**容器類型**下拉式清單中指定的 AMI。如需如何建立自訂 AMI 的詳細資訊，請參閱 [AWS Elastic Beanstalk 開發人員指南](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)中的[使用自訂 AMIs](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customami.html)[，以及從 Amazon EC2 執行個體建立 AMI](tkv-create-ami-from-instance.md)。

1. 或者，如果您想要在 VPC 中啟動執行個體，請選取**使用 VPC **方塊。

1. 或者，如果您想要啟動單一 Amazon EC2 執行個體，然後將應用程式部署到該執行個體，請選取**單一執行個體環境**方塊。

   如果您選取此方塊，Elastic Beanstalk 仍會建立 Auto Scaling 群組，但不會進行設定。如果您想要稍後設定 Auto Scaling 群組，您可以使用 AWS 管理主控台。

1. 或者，如果您想要控制應用程式部署到執行個體的條件，請選取**啟用滾動部署**方塊。只有在您尚未選取**單一執行個體環境**方塊時，才能選取此方塊。

1. 如果您的應用程式使用 Amazon S3 和 DynamoDB 等 AWS 服務，提供登入資料的最佳方法是使用 IAM 角色。在**部署的應用程式許可**區域中，您可以選擇現有的 IAM 角色，或建立精靈用來啟動環境的 IAM 角色。使用 的應用程式 適用於 .NET 的 AWS SDK 會在向 AWS 服務提出請求時，自動使用此 IAM 角色提供的登入資料。

1. 如果您的應用程式存取 Amazon RDS 資料庫，請在**關聯式資料庫存取**區域的下拉式清單中，選取精靈將更新的任何 Amazon RDS 安全群組旁的方塊，以便您的 Amazon EC2 執行個體可以存取該資料庫。

1. 選擇**下一步**。
   + 如果您選取**使用 VPC**，則會顯示 **VPC 選項**頁面。
   + 如果您選取**了啟用滾動部署**，但未選取**使用 VPC**，則**滾動部署**頁面將會顯示。請跳到本節稍後的說明，以說明如何使用**滾動部署**頁面。
   + 如果您未選取**使用 VPC** 或**啟用滾動部署**，則會顯示**應用程式選項**頁面。請跳到本節稍後說明如何使用**應用程式選項**頁面的說明。

1. 如果您選取**使用 VPC**，請在 **VPC 選項**頁面上指定資訊，以在 VPC 中啟動您的應用程式。  
![\[VPC Options interface for configuring AWS Elastic Beanstalk application deployment settings.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-vpc-console.png)

   VPC 必須已建立。如果您在 Toolkit for Visual Studio 中建立 VPC， Toolkit for Visual Studio 會為您填入此頁面。如果您在 [AWS 管理主控台](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-basic.html)中建立 VPC，請在此頁面中輸入 VPC 的相關資訊。

## 部署至 VPC 的重要考量事項
<a name="key-considerations-for-deployment-to-a-vpc"></a>
+ 您的 VPC 至少需要一個公有和一個私有子網路。
+ 在 *ELB 子網路*下拉式清單中，指定公有子網路。Toolkit for Visual Studio 會將您應用程式的 Elastic Load Balancing 負載平衡器部署至公有子網路。公有子網路與具有指向網際網路閘道項目的路由表相關聯。您可以辨識網際網路閘道，因為它的 ID 開頭為 `igw-`（例如 `igw-83cddaex`)。您使用 Toolkit for Visual Studio 建立的公有子網路具有識別為公有的標籤值。
+ 在*執行個體子網路*下拉式清單中，指定私有子網路。Toolkit for Visual Studio 會將您應用程式的 Amazon EC2 執行個體部署到私有子網路。
+ 應用程式適用的 Amazon EC2 執行個體會透過公有子網路中執行網路位址轉譯 (NAT) 的 Amazon EC2 執行個體，從私有子網路與網際網路通訊。若要啟用此通訊，您需要一個 [VPC 安全群組](https://console.aws.amazon.com/vpc/home)，允許流量從私有子網路流向 NAT 執行個體。在安全群組下拉式清單中指定此 VPC *安全群組*。

如需如何將 Elastic Beanstalk 應用程式部署至 VPC 的詳細資訊，請參閱 [AWS Elastic Beanstalk 開發人員指南](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)。

1. 填寫 **VPC 選項**頁面上的所有資訊後，選擇**下一步**。
   + 如果您選取**啟用滾動部署**，則**滾動部署**頁面將會顯示。
   + 如果您未選取**啟用滾動部署**，則會顯示**應用程式選項**頁面。請跳到本節稍後說明如何使用**應用程式選項**頁面的說明。

1. 如果您選取**啟用滾動部署**，您可以在**滾動部署**頁面上指定資訊，以設定應用程式的新版本如何部署到負載平衡環境中的執行個體。例如，如果您的環境中有四個執行個體，而且您想要變更執行個體類型，您可以設定環境一次變更兩個執行個體。這有助於確保您的應用程式在進行變更時仍在執行。  
![\[Rolling Deployments configuration interface for AWS application updates and environment settings.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-rolling-console.png)

1. 在*應用程式版本*區域中，選擇選項以控制一次部署到百分比或數量的執行個體。指定所需的百分比或數字。

1. 或者，如果您想要指定部署期間保留在服務的執行個體數量，請在*環境組態*區域中選取方塊。如果您選取此方塊，請指定一次應修改的執行個體數目上限、一次應保留在服務的執行個體數目下限，或兩者。

1. 選擇*下一步*。

1. 在**應用程式選項**頁面上，您可以指定組建、網際網路資訊服務 (IIS) 和應用程式設定的相關資訊。  
![\[Application Options interface for configuring build and deployment settings for AWS.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-options-console.png)

1. 在**建置和 IIS 部署設定**區域中，在**專案建置組態**下拉式清單中，選擇目標建置組態。如果精靈可以找到它，**則版本**會顯示在此方塊中。

1. 在**應用程式集區**下拉式清單中，選擇應用程式所需的 .NET Framework 版本。應該已顯示正確的 .NET Framework 版本。

1. 如果您的應用程式為 32 位元，請選取**啟用 32 位元應用程式**方塊。

1. 在**應用程式路徑**方塊中，指定 IIS 將用於部署應用程式的路徑。預設會指定**預設網站/**，通常會轉譯為路徑 `c:\inetpub\wwwroot`。如果您指定**預設網站/**以外的路徑，精靈會在指向您指定路徑**的預設網站/**路徑中放置重新導向。

1. 在**應用程式設定**區域中，於**運作狀態檢查 URL** 方塊中，輸入 Elastic Beanstalk 的 URL 以檢查 Web 應用程式是否仍然回應。此 URL 與根伺服器 URL 相關。預設會指定根伺服器 URL。例如，如果完整 URL 為 `example.com/site-is-up.html`，則輸入 `/site-is-up.html`。

1. 在**索引**鍵和**值**區域中，您可以指定要新增至應用程式`Web.config`檔案的任何索引鍵和值對。
**注意**  
雖然不建議，但您可以使用**金鑰**和**值**的 區域來指定應用程式應執行的 AWS 登入資料。偏好的方法是在**AWS 選項**頁面的 **Identity and Access Management Role 下拉式清單中指定 IAM 角色**。不過，如果您必須使用 AWS 登入資料而非 IAM 角色來執行應用程式，請在**金鑰**列中選擇 **AWSAccessKey**。在**值**列中，輸入存取金鑰。針對 **AWSSecretKey** 重複這些步驟。

1. 選擇**下一步**。  
![\[Review window for publishing an application to AWS Elastic Beanstalk with deployment details.\]](http://docs.aws.amazon.com/zh_tw/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-review-console.png)

1. 在**檢閱**頁面上，檢閱您設定的選項，並在**精靈關閉時選取開啟環境狀態視窗**方塊。

1. 如果各個項目都正確，請選擇 **Deploy (部署)**。
**注意**  
當您部署應用程式時，作用中的帳戶會針對應用程式使用 AWS 的資源收取費用。

   有關部署的資訊將顯示在 Visual Studio 狀態列和**輸出**視窗中。這可能需要幾分鐘的時間。部署完成時，**輸出**視窗中會顯示確認訊息。

1. 若要刪除部署，請在 AWS Explorer 中展開 **Elastic Beanstalk** 節點，開啟部署子節點的內容 （按一下滑鼠右鍵） 選單，然後選擇**刪除**。刪除程序可能需要幾分鐘的時間。