

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

# 使用 Elastic Beanstalk 部署 .NET Windows 應用程式
<a name="create_deploy_NET"></a>

**查看 *AWS Developer Center 上的 .NET***  
  
您是否已停止使用我們的 *.Net 開發人員中心*？ 這是 .NET on 的所有物件的一站式商店 AWS。  
如需詳細資訊，請參閱[AWS 開發人員中心的 .NET](https://aws.amazon.com/developer/language/net)。

本章提供設定和部署 ASP.NET 和 .NET Core Windows Web 應用程式的說明 AWS Elastic Beanstalk。Elastic Beanstalk 可讓您使用 Amazon Web Services 輕鬆部署、管理和擴展 .NET (Windows) Web 應用程式。

您可以使用 Elastic Beanstalk 命令列界面 (EB CLI) 或使用 Elastic Beanstalk 主控台，在幾分鐘內部署應用程式。部署 Elastic Beanstalk 應用程式之後，您可以繼續使用 EB CLI 來管理您的應用程式和環境，也可以使用 Elastic Beanstalk 主控台 AWS CLI或 APIs。

本章提供下列教學課程：
+ [Windows 上的 .NET Core QuickStart ](dotnet-quickstart.md) — Step-by-step說明。 **
+ [適用於 ASP.NET 的 QuickStart ](aspnet-quickstart.md) — Step-by-step說明 AWS Toolkit for Visual Studio。 ** ASP.NET 

如果您需要 Windows .NET Core 應用程式開發的協助，您可以前往幾個地方：
+  [.NET 開發論壇](https://forums.aws.amazon.com/forum.jspa?forumID=61) — 張貼您的問題並取得意見回饋。
+ [.NET Developer Center](https://aws.amazon.com/net/) — 範例程式碼、文件、工具和其他資源的一站式商店。
+ [AWS 適用於 .NET 的 SDK 文件](https://aws.amazon.com/documentation/sdk-for-net/) — 閱讀有關設定 SDK 和執行程式碼範例、SDK 的功能，以及有關 SDK API 操作的詳細資訊。

**注意**  
此平台不支援工作者環境。如需詳細資訊，請參閱[Elastic Beanstalk 工作者環境](using-features-managing-env-tiers.md)。

**Topics**
+ [QuickStart：將 Windows 上的 .NET Core 應用程式部署至 Elastic Beanstalk](dotnet-quickstart.md)
+ [QuickStart：將 ASP.NET 應用程式部署至 Elastic Beanstalk](aspnet-quickstart.md)
+ [設定您的 .NET 開發環境](dotnet-devenv.md)
+ [使用 Elastic Beanstalk .NET Windows 平台](create_deploy_NET.container.console.md)
+ [將 Amazon RDS 資料庫執行個體新增到您的 .NET 應用程式環境](create_deploy_NET.rds.md)
+ [的 AWS Toolkit for Visual Studio](dotnet-toolkit.md)
+ [將您的內部部署 .NET 應用程式遷移至 Elastic Beanstalk](dotnet-onpremmigration.md)
+ [Elastic Beanstalk 上 Windows Server 淘汰元件的建議](dotnet-deprecation-recommendations.md)

# QuickStart：將 Windows 上的 .NET Core 應用程式部署至 Elastic Beanstalk
<a name="dotnet-quickstart"></a>

本 QuickStart 教學課程會逐步解說在 Windows 上建立 .NET Core 應用程式並將其部署至 AWS Elastic Beanstalk 環境的程序。

**不適用於生產用途**  
範例僅用於示範。請勿在生產環境中使用範例應用程式。

**Topics**
+ [AWS 您的帳戶](#dotnet-quickstart-aws-account)
+ [先決條件](#dotnet-quickstart-prereq)
+ [步驟 1：在 Windows 上建立 .NET Core 應用程式](#dotnet-quickstart-create-app)
+ [步驟 2：在本機執行您的應用程式](#dotnet-quickstart-run-local)
+ [步驟 3：使用 EB CLI 在 Windows 上部署 .NET Core](#dotnet-quickstart-deploy)
+ [步驟 4：在 Elastic Beanstalk 上執行應用程式](#dotnet-quickstart-run-eb-ap)
+ [步驟 5：清除](#go-tutorial-cleanup)
+ [AWS 應用程式的 資源](#dotnet-quickstart-eb-resources)
+ [後續步驟](#dotnet-quickstart-next-steps)
+ [使用 Elastic Beanstalk 主控台部署](#dotnet-quickstart-console)

## AWS 您的帳戶
<a name="dotnet-quickstart-aws-account"></a>

如果您還不是 AWS 客戶，則需要建立 AWS 帳戶。註冊可讓您存取 Elastic Beanstalk 和其他您需要 AWS 的服務。

如果您已經有 AWS 帳戶，您可以繼續進行 [先決條件](#dotnet-quickstart-prereq)。

### 建立 AWS 帳戶
<a name="dotnet-quickstart-aws-account-procedure"></a>

#### 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

如果您沒有 AWS 帳戶，請完成下列步驟來建立一個。

**註冊 AWS 帳戶**

1. 開啟 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 請遵循線上指示進行。

   部分註冊程序需接收來電或簡訊，並在電話鍵盤輸入驗證碼。

   當您註冊 時 AWS 帳戶，*AWS 帳戶根使用者*會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務，請將管理存取權指派給使用者，並且僅使用根使用者來執行[需要根使用者存取權的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時登錄 [https://aws.amazon.com/](https://aws.amazon.com/) 並選擇**我的帳戶**，以檢視您目前的帳戶活動並管理帳戶。

#### 建立具有管理存取權的使用者
<a name="create-an-admin"></a>

註冊 後 AWS 帳戶，請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center和建立 管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

   如需使用根使用者登入的說明，請參閱 *AWS 登入 使用者指南*中的[以根使用者身分登入](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

   如需說明，請參閱《*IAM 使用者指南*》中的[為您的 AWS 帳戶 根使用者 （主控台） 啟用虛擬 MFA 裝置](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**建立具有管理存取權的使用者**

1. 啟用 IAM Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

## 先決條件
<a name="dotnet-quickstart-prereq"></a>

為了遵循本指南的程序，您需要命令列終端機或 shell 來執行命令。命令會顯示在前面加上提示符號 (＞) 的清單中，並適時顯示目前目錄的名稱。

```
C:\eb-project> this is a command
this is output
```

### EB CLI
<a name="dotnet-quickstart-prereq.ebcli"></a>

本教學使用 Elastic Beanstalk 命令列界面 (EB CLI)。關於安裝和設定 EB CLI 的詳細資訊，請參閱[使用設定指令碼安裝 EB CLI （建議）](eb-cli3.md#eb-cli3-install) 和[設定 EB CLI](eb-cli3-configuration.md)。

### Windows 上的 .NET Core
<a name="dotnet-quickstart-prereq.runtime"></a>

如果您的本機電腦上未安裝 .NET 開發套件，您可以依照 [.NET 文件網站上的下載](https://dotnet.microsoft.com/en-us/download) [.NET](https://learn.microsoft.com/en-us/dotnet/) 連結進行安裝。

執行下列命令來驗證您的 .NET SDK 安裝。

```
C:\> dotnet --info
```

## 步驟 1：在 Windows 上建立 .NET Core 應用程式
<a name="dotnet-quickstart-create-app"></a>

建立專案目錄。

```
C:\> mkdir eb-dotnetcore
C:\> cd eb-dotnetcore
```

接著，執行下列命令來建立範例 Hello World RESTful Web 服務應用程式。

```
C:\eb-dotnetcore> dotnet new web --name HelloElasticBeanstalk
C:\eb-dotnetcore> cd HelloElasticBeanstalk
```

## 步驟 2：在本機執行您的應用程式
<a name="dotnet-quickstart-run-local"></a>

執行下列命令以在本機執行您的應用程式。

```
C:\eb-dotnetcore\HelloElasticBeasntalk> dotnet run
```

輸出看起來應該類似下列文字。

```
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7222
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5228
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\Users\Administrator\eb-dotnetcore\HelloElasticBeanstalk
```

**注意**  
`dotnet` 命令會在本機執行應用程式時隨機選取連接埠。在此範例中，連接埠為 5228。當您將應用程式部署到您的 Elastic Beanstalk 環境時，應用程式將在連接埠 5000 上執行。

在 Web 瀏覽器`http://localhost:port`中輸入 URL 地址。在此特定範例中，命令為 `http://localhost:5228`。Web 瀏覽器應該顯示「Hello World！」。

## 步驟 3：使用 EB CLI 在 Windows 上部署 .NET Core
<a name="dotnet-quickstart-deploy"></a>

執行下列命令，為此應用程式建立 Elastic Beanstalk 環境。

 

**在 Windows 上建立環境並部署 .NET Core**

1. 在 `HelloElasticBeanstalk`目錄中執行下列命令，以發佈和壓縮您的應用程式。

   ```
   C:\eb-dotnetcore\HelloElasticBeasntalk> dotnet publish -o site
   C:\eb-dotnetcore\HelloElasticBeasntalk> cd site
   C:\eb-dotnetcore\HelloElasticBeasntalk\site> Compress-Archive -Path * -DestinationPath ../site.zip
   C:\eb-dotnetcore\HelloElasticBeasntalk\site> cd ..
   ```

1. 在`HelloElasticBeanstalk`名為 的 中建立新的檔案`aws-windows-deployment-manifest.json`，其中包含下列內容：

   ```
   {
       "manifestVersion": 1,
       "deployments": {
           "aspNetCoreWeb": [
           {
               "name": "test-dotnet-core",
               "parameters": {
                   "appBundle": "site.zip",
                   "iisPath": "/",
                   "iisWebSite": "Default Web Site"
               }
           }
           ]
       }
   }
   ```

1. 透過 **eb init** 命令初始化您的 EB CLI 儲存庫。

   ```
   C:\eb-dotnetcore\HelloElasticBeasntalk> eb init -p iis dotnet-windows-server-tutorial --region us-east-2
   ```

   此命令會建立名為 的應用程式，`dotnet-windows-server-tutorial`並設定您的本機儲存庫，以使用最新的 Windows 伺服器平台版本建立環境。

1. 使用 **eb create** 建立環境並於其中部署您的應用程式。Elastic Beanstalk 會自動為您的應用程式建置 zip 檔案，並在連接埠 5000 上啟動它。

   ```
   C:\eb-dotnetcore\HelloElasticBeasntalk> eb create dotnet-windows-server-env
   ```

   Elastic Beanstalk 大約需要五分鐘的時間來建立您的環境。

## 步驟 4：在 Elastic Beanstalk 上執行應用程式
<a name="dotnet-quickstart-run-eb-ap"></a>

當建立環境的程序完成時，請使用 開啟您的網站**eb open**。

```
C:\eb-dotnetcore\HelloElasticBeasntalk> eb open
```

恭喜您！您已使用 Elastic Beanstalk 在 Windows 應用程式上部署 .NET Core！這會開啟瀏覽器視窗，並使用為應用程式建立的網域名稱。

## 步驟 5：清除
<a name="go-tutorial-cleanup"></a>

您可以在完成使用應用程式時終止您的環境。Elastic Beanstalk 會終止與您的環境相關聯的所有 AWS 資源。

若要使用 EB CLI 終止 Elastic Beanstalk 環境，請執行下列命令。

```
C:\eb-dotnetcore\HelloElasticBeasntalk> eb terminate
```

## AWS 應用程式的 資源
<a name="dotnet-quickstart-eb-resources"></a>

您剛建立單一執行個體應用程式。它可作為具有單一 EC2 執行個體的直接範例應用程式，因此不需要負載平衡或自動擴展。對於單一執行個體應用程式，Elastic Beanstalk 會建立下列 AWS 資源：
+ **EC2 執行個體** – 設定在您所選平台上執行 Web 應用程式的 Amazon EC2 虛擬機器。

  每個平台會執行不同一套軟體、設定檔和指令碼，來支援特定的語言版本、架構、Web 容器或其組合。大多數的平台會使用 Apache 或 nginx 做為反向代理，處理您 Web 應用程式前端的網路流量、向它轉送請求、提供靜態資產，並產生存取和錯誤日誌。
+ **執行個體安全群組** – 設定允許從連接埠 80 傳入流量的 Amazon EC2 安全群組。此資源可讓負載平衡器傳來的 HTTP 傳輸資料，到達執行您 Web 應用程式的 EC2 執行個體。在預設情況下，不允許傳輸資料從其他通訊埠傳送。
+ **Amazon S3 儲存貯體** - 儲存位置，用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。
+ **Amazon CloudWatch 警示** – 兩種 CloudWatch 警示，用來監控您環境中執行個體上的負載，會在負載過高或過低時觸發。當警示觸發時，您的 Auto Scaling 群組會擴展或縮減以進行回應。
+ **CloudFormation 堆疊** – Elastic Beanstalk 使用 CloudFormation 啟動環境中的資源並傳播組態變更。資源定義於範本中，您可在 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation)中檢視此範本。
+  **網域名稱** – 會路由到您 Web 應用程式的網域名稱，其格式為 **subdomain*.*region*.elasticbeanstalk.com*。

Elastic Beanstalk 會管理所有這些資源。當您終止環境時，Elastic Beanstalk 會終止其中的所有資源。

## 後續步驟
<a name="dotnet-quickstart-next-steps"></a>

在您擁有執行應用程式的環境後，可以隨時部署應用程式的新版本或不同的應用程式。部署新的應用程式版本非常快速，因無須佈建或重新啟動 EC2 執行個體。您也可以使用 Elastic Beanstalk 主控台探索您的新環境。如需詳細步驟，請參閱本指南*入門*章節中的[探索您的環境](GettingStarted.md#GettingStarted.Explore)。

**嘗試更多教學課程**  
如果您想要使用不同的範例應用程式來嘗試其他教學課程，請參閱 [適用於 ASP.NET 的 QuickStart ](aspnet-quickstart.md)。

部署範例應用程式一兩個，並準備好開始在本機開發和執行 Windows 應用程式上的 .NET Core 之後，請參閱 [設定您的 .NET 開發環境](dotnet-devenv.md) 

## 使用 Elastic Beanstalk 主控台部署
<a name="dotnet-quickstart-console"></a>

您也可以使用 Elastic Beanstalk 主控台來啟動範例應用程式。如需詳細步驟，請參閱本指南*入門*章節中的[建立範例應用程式](GettingStarted.md#GettingStarted.CreateApp)。

# QuickStart：將 ASP.NET 應用程式部署至 Elastic Beanstalk
<a name="aspnet-quickstart"></a>

本 QuickStart 教學課程會逐步引導您建立 ASP.NET 應用程式並將其部署到 AWS Elastic Beanstalk 環境的程序。

**不適用於生產用途**  
範例僅用於示範。請勿在生產環境中使用範例應用程式。

**Topics**
+ [AWS 您的帳戶](#aspnet-quickstart-aws-account)
+ [先決條件](#aspnet-quickstart-prereq)
+ [步驟 1：建立 ASP.NET 應用程式](#aspnet-quickstart-create-app)
+ [步驟 2：在本機執行您的應用程式](#aspnet-quickstart-run-local)
+ [步驟 3：使用 部署您的 ASP.NET 應用程式 AWS Toolkit for Visual Studio](#aspnet-quickstart-deploy)
+ [步驟 4：在 Elastic Beanstalk 上執行應用程式](#aspnet-quickstart-run-eb-ap)
+ [步驟 5：清除](#aspnet-quickstart-cleanup)
+ [AWS 您應用程式的 資源](#aspnet-quickstart-eb-resources)
+ [後續步驟](#aspnet-quickstart-next-steps)
+ [使用 Elastic Beanstalk 主控台部署](#aspnet-quickstart-console)

## AWS 您的帳戶
<a name="aspnet-quickstart-aws-account"></a>

如果您還不是 AWS 客戶，則需要建立 AWS 帳戶。註冊可讓您存取 Elastic Beanstalk 和其他您需要 AWS 的服務。

如果您已經有 AWS 帳戶，您可以繼續進行 [先決條件](#aspnet-quickstart-prereq)。

### 建立 AWS 帳戶
<a name="aspnet-quickstart-aws-account-procedure"></a>

#### 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

如果您沒有 AWS 帳戶，請完成下列步驟來建立一個。

**註冊 AWS 帳戶**

1. 開啟 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 請遵循線上指示進行。

   部分註冊程序需接收來電或簡訊，並在電話鍵盤輸入驗證碼。

   當您註冊 時 AWS 帳戶，*AWS 帳戶根使用者*會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務，請將管理存取權指派給使用者，並且僅使用根使用者來執行[需要根使用者存取權的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時登錄 [https://aws.amazon.com/](https://aws.amazon.com/) 並選擇**我的帳戶**，以檢視您目前的帳戶活動並管理帳戶。

#### 建立具有管理存取權的使用者
<a name="create-an-admin"></a>

註冊 後 AWS 帳戶，請保護您的 AWS 帳戶根使用者 AWS IAM Identity Center、啟用和建立管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

   如需使用根使用者登入的說明，請參閱 *AWS 登入 使用者指南*中的[以根使用者身分登入](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

   如需說明，請參閱《*IAM 使用者指南*》中的[為您的 AWS 帳戶 根使用者 （主控台） 啟用虛擬 MFA 裝置](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**建立具有管理存取權的使用者**

1. 啟用 IAM Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

## 先決條件
<a name="aspnet-quickstart-prereq"></a>

本 QuickStart 教學課程將逐步引導您建立「Hello World」應用程式，並將其部署到具有 Visual Studio 和 的 Elastic Beanstalk 環境 AWS Toolkit for Visual Studio。

### Visual Studio
<a name="aspnet-quickstart-prereq.vs"></a>

若要下載並安裝 Visual Studio，請遵循 Visual Studio [下載頁面上](https://visualstudio.microsoft.com/downloads/)的指示。此範例使用 Visual Studio 2022。在 Visual Studio 安裝期間，選取下列特定項目：
+ 在**工作負載**索引標籤上：選取 **ASP.NET 和 Web 開發**。
+ 在**個別元件**索引標籤上：選取 **.NET Framework 4.8 開發工具和** **.NET Framework 專案和項目範本**。

### AWS Toolkit for Visual Studio
<a name="aspnet-quickstart-prereq.aws-vs-tk"></a>

若要下載和設定 ， AWS Toolkit for Visual Studio 請遵循 AWS Toolkit for Visual Studio 《 使用者指南》[入門](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/getting-set-up.html)主題中的指示。

## 步驟 1：建立 ASP.NET 應用程式
<a name="aspnet-quickstart-create-app"></a>

接著，建立您要部署到 Elastic Beanstalk 環境的應用程式。我們將建立「Hello World」ASP.NET Web 應用程式。

**建立 ASP.NET 應用程式**

1. 啟動 Visual Studio。在**檔案**功能表中，選取**新增**，然後選取**投影**。

1. 隨即顯示**建立新專案**對話方塊。選取 **ASP.NET Web 應用程式 (.NET Framework)**，然後選取**下一步**。

1. 在**設定您的新專案**對話方塊中，輸入 `eb-aspnet` 做為您的**專案名稱**。從**架構**下拉式功能表中選取 **.NET Framework 4.8**，然後選取**建立**。

   請注意專案目錄。在此範例中，專案目錄為 `C:\Users\Administrator\source\repos\eb-aspnet\eb-aspnet`。

1. 隨即顯示**建立新的 ASP.NET Web 應用程式**對話方塊。選取**空白**範本。接著選取**建立**。

   此時，您已使用 Visual Studio 建立空的 ASP.NET Web 應用程式專案。接下來，我們將建立 Web 表單，做為 ASP.NET Web 應用程式的進入點。

1. 從**專案**功能表中，選取**新增項目**。在**新增項目**頁面上，選取 **Web 表單**並命名為 `Default.aspx`。接著選取**新增**。

1. 將下列項目新增至 `Default.aspx:`

   ```
   <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eb_aspnet.Default" %>
   
   <!DOCTYPE html>
   
   <html xmlns="https://www.w3.org/1999/xhtml">
   <head runat="server">
       <title>Hello Elastic Beanstalk!</title>
   </head>
   <body>
       <form id="body" runat="server">
           <div>
               Hello Elastic Beanstalk! This is an ASP.NET on Windows Server application.
           </div>
       </form>
   </body>
   </html>
   ```

## 步驟 2：在本機執行您的應用程式
<a name="aspnet-quickstart-run-local"></a>

在 Visual Studio 中**，從偵錯**功能表選取**開始偵錯**以在本機執行應用程式。頁面應該會顯示「Hello Elastic Beanstalk！這是 Windows Server 應用程式上的 ASP.NET。」

## 步驟 3：使用 部署您的 ASP.NET 應用程式 AWS Toolkit for Visual Studio
<a name="aspnet-quickstart-deploy"></a>

請依照下列步驟建立 Elastic Beanstalk 環境，並將您的新應用程式部署到其中。

**建立環境並部署 ASP.NET 應用程式**

1. 在 **Solution Explorer** 中，在應用程式上按一下滑鼠右鍵，然後選取**發佈至 AWS Elastic Beanstalk**。

1. 選擇新 Elastic Beanstalk 應用程式和環境的名稱。

1. 在此之後，您可以繼續執行 Elastic Beanstalk 提供的預設值，或將任何選項和設定修改為您的喜好。

1. 在**檢閱**頁面上，選取**部署**。這將封裝您的 ASP.NET Web 應用程式，並將其部署到 Elastic Beanstalk。

   Elastic Beanstalk 大約需要五分鐘的時間來建立您的環境。Elastic Beanstalk 部署功能將監控您的環境，直到其具備新部署的程式碼且變為可用。在 **Env：<**environment name**>** 索引標籤上，您會看到環境的狀態。

## 步驟 4：在 Elastic Beanstalk 上執行應用程式
<a name="aspnet-quickstart-run-eb-ap"></a>

當建立環境的程序完成時，**Env：<**environment name**>** 索引標籤會顯示您環境和應用程式的相關資訊，包括啟動應用程式的網域 URL。在此索引標籤上選取此 URL，或將其複製並貼到您的 Web 瀏覽器。

恭喜您！您已使用 Elastic Beanstalk 部署 ASP.NET 應用程式！

## 步驟 5：清除
<a name="aspnet-quickstart-cleanup"></a>

當您完成使用應用程式時，您可以在 中終止您的環境 AWS Toolkit for Visual Studio。

**終止環境**

1. 在 **AWS Explorer** 中，展開 Elastic Beanstalk 節點和應用程式節點。以滑鼠右鍵按一下您的應用程式環境，然後選取 **Terminate Environment (終止環境)**。

1. 提示出現時，按一下 **Yes (是)** 以確認您希望終止該環境。Elastic Beanstalk 需要幾分鐘的時間來終止環境中執行 AWS 的資源。

## AWS 您應用程式的 資源
<a name="aspnet-quickstart-eb-resources"></a>

您剛建立單一執行個體應用程式。它可作為具有單一 EC2 執行個體的簡單範例應用程式，因此不需要負載平衡或自動擴展。對於單一執行個體應用程式，Elastic Beanstalk 會建立下列 AWS 資源：
+ **EC2 執行個體** – 設定在您所選平台上執行 Web 應用程式的 Amazon EC2 虛擬機器。

  每個平台會執行不同一套軟體、設定檔和指令碼，來支援特定的語言版本、架構、Web 容器或其組合。大多數的平台會使用 Apache 或 nginx 做為反向代理，處理您 Web 應用程式前端的網路流量、向它轉送請求、提供靜態資產，並產生存取和錯誤日誌。
+ **執行個體安全群組** – 設定允許從連接埠 80 傳入流量的 Amazon EC2 安全群組。此資源可讓負載平衡器傳來的 HTTP 傳輸資料，到達執行您 Web 應用程式的 EC2 執行個體。在預設情況下，不允許傳輸資料從其他通訊埠傳送。
+ **Amazon S3 儲存貯體** - 儲存位置，用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。
+ **Amazon CloudWatch 警示** – 兩種 CloudWatch 警示，用來監控您環境中執行個體上的負載，會在負載過高或過低時觸發。當警示觸發時，您的 Auto Scaling 群組會擴展或縮減以進行回應。
+ **CloudFormation 堆疊** – Elastic Beanstalk 使用 CloudFormation 啟動環境中的資源並傳播組態變更。資源定義於範本中，您可在 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation)中檢視此範本。
+  **網域名稱** – 會路由到您 Web 應用程式的網域名稱，其格式為 **subdomain*.*region*.elasticbeanstalk.com*。

Elastic Beanstalk 會管理所有這些資源。當您終止環境時，Elastic Beanstalk 會終止其中的所有資源。

## 後續步驟
<a name="aspnet-quickstart-next-steps"></a>

在您擁有執行應用程式的環境後，可以隨時部署應用程式的新版本或不同的應用程式。部署新的應用程式版本非常快速，因無須佈建或重新啟動 EC2 執行個體。您也可以使用 Elastic Beanstalk 主控台探索您的新環境。如需詳細步驟，請參閱本指南*入門*章節中的[探索您的環境](GettingStarted.md#GettingStarted.Explore)。

**嘗試更多教學課程**  
如果您想要使用不同的範例應用程式來嘗試其他教學課程，請參閱 [Windows 上的 .NET Core QuickStart ](dotnet-quickstart.md)。

部署範例應用程式一兩個，並準備好開始在本機開發和執行 ASP.NET 應用程式後，請參閱 [設定您的 .NET 開發環境](dotnet-devenv.md) 

## 使用 Elastic Beanstalk 主控台部署
<a name="aspnet-quickstart-console"></a>

您也可以使用 Elastic Beanstalk 主控台來啟動範例應用程式。如需詳細步驟，請參閱本指南*入門*章節中的[建立範例應用程式](GettingStarted.md#GettingStarted.CreateApp)。

# 設定您的 .NET 開發環境
<a name="dotnet-devenv"></a>

本主題提供設定 .NET Windows 開發環境的說明，以在本機測試您的應用程式，然後再部署到 AWS Elastic Beanstalk。它也參考提供實用工具安裝指示的網站。

**Topics**
+ [安裝 IDE](#dotnet-devenv-ide)
+ [安裝 AWS Toolkit for Visual Studio](#dotnet-devenv-toolkit)

如果您需要從應用程式中管理 AWS 資源，請安裝適用於 .NET 的 AWS 開發套件。例如，您可以使用 Amazon S3 來存放並擷取資料。

使用適用於 .NET 的 AWS 開發套件，您可以在幾分鐘內開始使用可下載的單一套件，其中包含 Visual Studio 專案範本、 AWS .NET 程式庫、C\$1 程式碼範例和文件。關於使用程式庫來建置應用程式的方式，則提供 C\$1 的實務範例。另亦提供線上影片教學課程和參考文件，協助您學習使用程式庫和程式碼範例。

如需詳細資訊及安裝說明，請造訪[適用於 .NET 的AWS 開發套件首頁](https://aws.amazon.com/sdk-for-net/)。

## 安裝 IDE
<a name="dotnet-devenv-ide"></a>

整合開發環境 (IDE) 提供可加速應用程式開發的各種功能。若您沒有使用 IDE 進行 .NET 開發作業的經驗，請嘗試透過 Visual Studio Community 入門。

請造訪 [Visual Studio Community](https://www.visualstudio.com/vs/community/) 頁面，下載並安裝 Visual Studio Community。

## 安裝 AWS Toolkit for Visual Studio
<a name="dotnet-devenv-toolkit"></a>

[AWS Toolkit for Visual Studio](dotnet-toolkit.md) 是 Visual Studio IDE 的開放原始碼外掛程式，可讓開發人員更輕鬆地使用 開發、偵錯和部署 .NET 應用程式 AWS。請造訪 [Toolkit for Visual Studio](https://aws.amazon.com/visualstudio/) 首頁，取得安裝說明。

# 使用 Elastic Beanstalk .NET Windows 平台
<a name="create_deploy_NET.container.console"></a>

本主題說明如何在 Elastic Beanstalk 上設定、建置和執行 ASP.NET 和 .NET Core Windows Web 應用程式。

AWS Elastic Beanstalk 針對不同版本的 .NET 程式設計架構和 Windows Server 支援多個平台。如需完整清單，請參閱 *AWS Elastic Beanstalk 平台*文件中的[具備 IIS 的 Windows Server 上的 .NET](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)。

Elastic Beanstalk 提供[組態選項](command-options.md)，您可用其於 Elastic Beanstalk 環境中自訂 EC2 執行個體上執行的軟體。您可以設定應用程式所需的環境變數，啟用日誌輪換至 Amazon S3，並進行 .NET Framework 設定。

Elastic Beanstalk 主控台中提供了[修改正在執行環境組態](environment-configuration-methods-after.md)的組態選項。要避免在終止環境的組態時遺失組態，您可以使用[已儲存組態](environment-configuration-savedconfig.md)來儲存您的設定，並在之後套用至另一個環境。

若要將設定儲存於原始程式碼，您可以包含[組態檔案](ebextensions.md)。每次您建立環境或部署應用程式，組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼，並在部署期間執行其他執行個體自訂操作。

在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定，並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊，請參閱[組態選項](command-options.md)。

## 在 Elastic Beanstalk 主控台中設定 .NET 環境
<a name="dotnet-console"></a>

您可以使用 Elastic Beanstalk 主控台來啟用至 Amazon S3 的日誌輪換，設定您的應用程式可以從環境讀取的變數，並變更 .NET Framework 設定。

**在 Elastic Beanstalk 主控台中設定 .NET 環境**

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

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

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

1. 在**更新、監控和日誌記錄**組態類別中，選擇**編輯**。

### 容器選項
<a name="dotnet-console-framework"></a>
+ **Target .NET runtime (目標 .NET 執行時間)** – 設定為 `2.0` 來執行 CLR v2。
+ **Enable 32-bit applications (啟用 32 位元應用程式)** – 設定為 `True` 來執行 32 位元應用程式。

### 日誌選項
<a name="dotnet-console-logs"></a>

Log Options (日誌選項) 區段有兩個設定：
+ **執行個體設定檔** – 指定有權存取與您應用程式相關的 Amazon S3 儲存貯體的執行個體設定檔。
+ **Enable log file rotation to Amazon S3** (啟用 Amazon S3 的日誌檔案輪換) – 指定是否將應用程式 Amazon EC2 執行個體的日誌檔案複製到與應用程式關聯的 Amazon S3 儲存貯體。

### 環境屬性
<a name="dotnet-console-properties"></a>

**Environment Properties (環境屬性)** 的部分可讓您針對執行您應用程式的 Amazon EC2 執行個體，來指定其上的環境資訊設定。這些設定會以金鑰值對的形式傳到應用程式。使用 `System.GetEnvironmentVariable` 來讀取這些值。相同金鑰可以同時存在於 `web.config` 中及當作環境屬性。使用 `System.Configuration` 命名空間來讀取 `web.config` 中的數值。

```
NameValueCollection appConfig = ConfigurationManager.AppSettings;
string endpoint = appConfig["API_ENDPOINT"];
```

如需詳細資訊，請參閱「[環境變數和其他軟體設定](environments-cfg-softwaresettings.md)」。

## aws:elasticbeanstalk:container:dotnet:apppool 命名空間
<a name="dotnet-namespaces"></a>

您可以使用[組態檔案](ebextensions.md)來設定組態選項，並在部署期間執行其他的執行個體設定工作。組態選項可以是[平台特定](command-options-specific.md)選項，也可以套用至 Elastic Beanstalk 服務整體中的所有[平台](command-options-general.md)。組態選項會組織成*命名空間*。

.NET 平台於 `aws:elasticbeanstalk:container:dotnet:apppool` 命名空間內定義的選項，可用來設定 .NET 執行時間。

下列範例組態檔案顯示此命名空間可用的各個選項的設定：

**Example .ebextensions/dotnet-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:dotnet:apppool:
    Target Runtime: 2.0
    Enable 32-bit Applications: True
```

Elastic Beanstalk 可提供許多組態選項讓您自訂環境。除了組態檔案，您也可以使用主控台、已儲存組態、EB CLI 或 AWS CLI來設定組態選項。如需詳細資訊，請參閱「[組態選項](command-options.md)」。

# 遷移 Elastic Beanstalk Windows Server 平台的主要版本
<a name="dotnet-v2migration"></a>

AWS Elastic Beanstalk 有數個主要版本的 Windows Server 平台。此頁面涵蓋了每個主要版本的主要改善，以及在您遷移至更新版本前應考量的事項。

Windows Server 平台目前的版本為第 2 版 (v2)。若您的應用程式使用任何 v2 之前的 Windows Server 平台版本，我們建議您遷移至 v2。

## Windows Server 平台主要版本中的新功能
<a name="dotnet-v2migration.diffs"></a>

### Windows Server 平台 V2
<a name="dotnet-v2migration.diffs.v2"></a>

Elastic Beanstalk Windows Server 平台的第 2 版 (v2) 已在 [2019 年 2 月發行](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2019-02-21-windows-v2.html)。V2 透過數種重要方式，讓 Windows Server 平台的行為與 Elastic Beanstalk Linux 類型平台的行為更為接近。V2 可完全與舊版 v1 相容，這使得從 v1 遷移的過程更為容易。

Windows Server 平台目前支援以下功能：
+ *版本控制* – 每個版本都會取得新的版本號碼，而您可以在建立和管理環境時參考以前的版本 (您可以使用的版本)。
+ *增強式運作狀態* – 如需詳細資訊，請參閱[Elastic Beanstalk 中的增強型運作狀態報告和監控](health-enhanced.md)。
+ *不可變*部署和*以額外批次進行滾動*部署 – 如需部署原則的詳細資訊，請參閱[將應用程式部署至 Elastic Beanstalk 環境](using-features.deploy-existing-version.md)。
+ *不可變更新* – 如需更新類型的詳細資訊，請參閱[組態變更](environments-updating.md)。
+ *受管平台更新* – 如需詳細資訊，請參閱[受管平台更新](environment-platform-update-managed.md)。

**注意**  
新的部署和更新功能依賴增強式運作狀態。請啟用增強式運作狀態以使用他們。如需詳細資訊，請參閱[啟用 Elastic Beanstalk 增強型運作狀態報告](health-enhanced-enable.md)。

### Windows Server 平台 V1
<a name="dotnet-v2migration.diffs.v1"></a>

Elastic Beanstalk Windows Server 平台的第 1.0.0 版 (v1) 已在 2015 年 10 月發行。此版本變更了 Elastic Beanstalk 在建立環境與更新期間，處理[組態檔案](ebextensions.md)中命令的順序。

先前的平台版本，在解決方案堆疊名稱中並未包含版本號碼：
+ 執行 IIS 8.5 的 64 位元 Windows Server 2012 R2
+ 執行 IIS 8.5 的 64 位元 Windows Server Core 2012 R2
+ 執行 IIS 8 的 64 位元 Windows Server 2012
+ 執行 IIS 7.5 的 64 位元 Windows Server 2008 R2

在先前的版本中，組態檔案的處理順序並不一致。當環境建立時，`Container Commands` 會在應用程式原始碼部署到 IIS 後執行。部署到執行中的環境時，容器指令會在新版本部署之前執行。在進行擴展時，則完全不會處理組態檔案。

除此之外，IIS 會在容器指令執行之前啟動。因此，一些客戶在容器的命令中實作了因應措施，讓 IIS 伺服器在命令執行之前先暫停，等命令執行完成後再次啟動。

第 1 版修正了不一致性，使 Windows Server 平台的行為與 Elastic Beanstalk Linux 類型平台的行為更為接近。在 v1 平台中，Elastic Beanstalk 永遠都會先執行容器命令，再啟動 IIS 伺服器。

v1 平台解決方案堆疊在 Windows Server 版本的後方加上了 `v1`：
+ 執行 IIS 8.5 的 64 位元 Windows Server 2012 R2 1.1.0 版
+ 執行 IIS 8.5 的 64 位元 Windows Server Core 2012 R2 1.1.0 版
+ 執行 IIS 8 的 64 位元 Windows Server 2012 1.1.0 版
+ 執行 IIS 7.5 的 64 位元 Windows Server 2008 R2 1.1.0 版

此外，v1 平台會先將您應用程式來源套件的內容，解壓縮到 `C:\staging\`，再執行容器命令。在容器命令執行完成後，此資料夾的內容會壓縮成 .zip 檔案，然後部署到 IIS。此工作流程可讓您在進行部署之前，先用命令或指令碼來修改應用程式來源套件的內容。

## 從先前的 Windows Server 平台主要版本遷移
<a name="dotnet-v2migration.migration"></a>

請在更新環境前，先閱讀本節的遷移考量事項。若要將您環境的平台更新至更新的版本，請參閱[更新您 Elastic Beanstalk 環境的平台版本](using-features.platform.upgrade.md)。

### 從 V1 到 V2
<a name="dotnet-v2migration.migration.fromv1"></a>

Windows Server 平台 v2 不支援 .NET Core 1.x 及 2.0。若您要將應用程式從 Windows Server v1 遷移至 v2，而您的應用程式使用了其中一個 .NET Core 版本，請將您的應用程式更新至 v2 支援的 .NET Core 版本。如需支援版本的清單，請參閱 *AWS Elastic Beanstalk 平台*中的[具備 IIS 的 Windows Server 上的 .NET](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)。

如果您的應用程式使用自訂的 Amazon Machine Image (AMI)，請根據 Windows Server 平台 v2 AMI 建立新自訂 AMI。如需進一步了解，請參閱[在 Elastic Beanstalk 環境中使用自訂 Amazon Machine Image (AMI)](using-features.customenv.md)。

**注意**  
Windows Server v2 的部署和更新功能依賴增強式運作狀態。當您將環境遷移至 v2 時，會停用增強式運作狀態。請啟用它以使用這些功能。如需詳細資訊，請參閱[啟用 Elastic Beanstalk 增強型運作狀態報告](health-enhanced-enable.md)。

### 從 V1 之前的版本
<a name="dotnet-v2migration.migration.fromv0"></a>

除了從 v1 遷移的考量事項，若您要從 v1 版本之前的 Windows Server 解決方案堆疊遷移應用程式，而您目前使用容器命令，請在遷移至更新版本時，移除任何您新增至其中，做為處理過程不一致性因應措施的命令。從 v1 開始，容器命令保證會在部署應用程式來源及啟動 IIS 前完全執行。這可讓您對 `C:\staging` 中的來源進行任何變更，並在此步驟期間修改 IIS 組態檔案，而不會發生任何問題。

例如，您可以使用 從 Amazon S3 AWS CLI 下載 DLL 檔案到您的應用程式來源：

`.ebextensions\copy-dll.config`

```
container_commands:
  copy-dll:
    command: aws s3 cp s3://amzn-s3-demo-bucket/dlls/large-dll.dll .\lib\
```

如需有關使用組態檔案的詳細資訊，請參閱[使用組態檔案 (`.ebextensions`) 來進行進階的環境自訂](ebextensions.md)。

# 透過部署資訊清單執行多個應用程式和 ASP.NET 核心應用程式
<a name="dotnet-manifest"></a>

您可使用部署資訊清單來指示 Elastic Beanstalk 如何部署您的應用程式。使用這個方法，您不需要用 `MSDeploy` 來產生在網站根路徑執行的單一 ASP.NET 應用程式的原始碼套件。相反地，您可以使用資訊清單檔案，在不同的路徑上執行多個應用程式。或者，您也可以告訴 Elastic Beanstalk 用 ASP.NET Core 部署和執行應用程式。您亦可使用部署資訊清單來設定應用程式集區，在其中執行您的應用程式。

部署資訊清單會將 [.NET Core 應用程式](#dotnet-manifest-dotnetcore)適用的支援新增至 Elastic Beanstalk。您可以部署沒有部署資訊清單的 .NET Framework 應用程式。不過，.NET Core 應用程式需要部署資訊清單，才能在 Elastic Beanstalk 上執行。使用部署資訊清單時，請為每個應用程式建立網站封存檔，然後將此封存檔納入內含部署資訊清單的第二個 ZIP 封存檔。

部署資訊清單亦增加[執行不同路徑的多個應用程式](#dotnet-manifest-multiapp)的能力。部署資訊清單會定義一系列部署目標，每個目標都有網站封存檔與 IIS 應執行資訊清單的路徑。例如，您可於 `/api` 路徑執行 Web API 處理非同步請求，並於使用 API 的根路徑執行 Web 應用程式。

您可以使用部署資訊清單來[設定具有自訂繫結和實體路徑的 IIS 網站](#dotnet-manifest-websites)。這可讓您設定網站，在部署應用程式之前接聽特定連接埠或主機名稱。

您也可以使用部署資訊清單來[使用 IIS 或 Kestrel 中的應用程式集區執行多個應用程式](#dotnet-manifest-apppool)。您可將應用程式集區設定為定期重新啟動您的應用程式、執行 32 位元應用程式，或使用特定版本的 .NET Framework 執行時間。

如需完整自訂功能，您可於 Windows PowerShell [自行撰寫部署指令碼](#dotnet-manifest-custom)，並指示 Elastic Beanstalk 安裝、解除安裝和重新啟動應用程式所需執行的指令碼。

部署資訊清單和相關功能需要 Windows Server 平台 [1.2.0 版或更新版本](dotnet-v2migration.md)。

如需略過 IIS 重設等所有可用組態選項、屬性和進階功能的詳細資訊，請參閱[部署資訊清單結構描述參考](dotnet-manifest-schema.md)。

**Topics**
+ [.NET Core 應用程式](#dotnet-manifest-dotnetcore)
+ [執行多個應用程式](#dotnet-manifest-multiapp)
+ [設定 IIS 網站](#dotnet-manifest-websites)
+ [使用應用程式請求路由 (ARR)](#dotnet-manifest-arr)
+ [設定應用程式集區](#dotnet-manifest-apppool)
+ [定義自訂部署](#dotnet-manifest-custom)
+ [部署資訊清單結構描述參考](dotnet-manifest-schema.md)

## .NET Core 應用程式
<a name="dotnet-manifest-dotnetcore"></a>

您可使用部署資訊清單，在 Elastic Beanstalk 上執行 .NET Core 應用程式。.NET Core 是跨平台版本的 .NET，隨附命令列工具 (`dotnet`)。您可以使用它來產生應用程式、在本機執行，並準備發佈。

欲於 Elastic Beanstalk 上執行 .NET Core 應用程式，您可以執行 `dotnet publish` 並將輸出納入 ZIP 封存檔，且不要納入任何其中的目錄。請將網站封存檔與具備類型為 `aspNetCoreWeb` 之部署目標的部署資訊清單，一同放置於原始碼套件。

下列部署資訊清單於根路徑執行的 .NET 核心應用程式，來自名為 `dotnet-core-app.zip` 的網站封存檔。

**Example aws-windows-deployment-manifest.json - .NET core**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

將資訊清單和網站封存檔打包至 ZIP 封存檔來建立原始碼套件。

**Example dotnet-core-bundle.zip**  

```
.
|-- aws-windows-deployment-manifest.json
`-- dotnet-core-app.zip
```

網站封存檔內含編譯的應用程式程式碼、依存項目和 `web.config` 檔案。

**Example dotnet-core-app.zip**  

```
.
|-- Microsoft.AspNetCore.Hosting.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.dll
|-- Microsoft.AspNetCore.Http.Abstractions.dll
|-- Microsoft.AspNetCore.Http.Extensions.dll
|-- Microsoft.AspNetCore.Http.Features.dll
|-- Microsoft.AspNetCore.Http.dll
|-- Microsoft.AspNetCore.HttpOverrides.dll
|-- Microsoft.AspNetCore.Server.IISIntegration.dll
|-- Microsoft.AspNetCore.Server.Kestrel.dll
|-- Microsoft.AspNetCore.WebUtilities.dll
|-- Microsoft.Extensions.Configuration.Abstractions.dll
|-- Microsoft.Extensions.Configuration.EnvironmentVariables.dll
|-- Microsoft.Extensions.Configuration.dll
|-- Microsoft.Extensions.DependencyInjection.Abstractions.dll
|-- Microsoft.Extensions.DependencyInjection.dll
|-- Microsoft.Extensions.FileProviders.Abstractions.dll
|-- Microsoft.Extensions.FileProviders.Physical.dll
|-- Microsoft.Extensions.FileSystemGlobbing.dll
|-- Microsoft.Extensions.Logging.Abstractions.dll
|-- Microsoft.Extensions.Logging.dll
|-- Microsoft.Extensions.ObjectPool.dll
|-- Microsoft.Extensions.Options.dll
|-- Microsoft.Extensions.PlatformAbstractions.dll
|-- Microsoft.Extensions.Primitives.dll
|-- Microsoft.Net.Http.Headers.dll
|-- System.Diagnostics.Contracts.dll
|-- System.Net.WebSockets.dll
|-- System.Text.Encodings.Web.dll
|-- dotnet-core-app.deps.json
|-- dotnet-core-app.dll
|-- dotnet-core-app.pdb
|-- dotnet-core-app.runtimeconfig.json
`-- web.config
```

## 執行多個應用程式
<a name="dotnet-manifest-multiapp"></a>

您可定義多個部署目標，藉此透過部署資訊清單執行多個應用程式。

以下部署資訊清單設定兩個 .NET Core 應用程式。`WebApiSampleApp` 應用程式實作簡單的 Web API，並在`/api`路徑上提供非同步請求。`DotNetSampleApp` 應用程式是一種 Web 應用程式，其在根路徑處理請求。

**Example aws-windows-deployment-manifest.json - 多個應用程式**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "WebAPISample",
        "parameters": {
          "appBundle": "WebApiSampleApp.zip",
          "iisPath": "/api"
        }
      },
      {
        "name": "DotNetSample",
        "parameters": {
          "appBundle": "DotNetSampleApp.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

此處提供具備多個應用程式的範例應用程式：
+ **可部署原始碼套件** - [dotnet-multiapp-sample-bundle-v2.zip](samples/dotnet-multiapp-sample-bundle-v2.zip)
+ **原始碼** - [dotnet-multiapp-sample-source-v2.zip](samples/dotnet-multiapp-sample-source-v2.zip)

## 設定 IIS 網站
<a name="dotnet-manifest-websites"></a>

您可以使用部署資訊清單，使用自訂繫結和實體路徑來設定 IIS 網站。當您需要設定在特定連接埠上接聽、使用自訂主機名稱或提供特定目錄內容的網站時，此功能非常有用。

下列部署資訊清單會設定使用特定連接埠號碼和自訂實體路徑在 HTTP 上監聽的自訂 IIS 網站：

**Example aws-windows-deployment-manifest.json - IIS 網站組態**  

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          }
        ]
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "appBundle": "dotnet-core-app.zip",
          "iisWebSite": "MyCustomSite",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

在此範例中：
+ 使用自訂實體路徑建立名為 "MyCustomSite" 的網站
+ 網站在連接埠 8080 上具有具有特定主機名稱的 HTTP 繫結
+ 使用 `iisWebSite` 參數將 ASP.NET Core 應用程式部署到此自訂網站

## 使用應用程式請求路由 (ARR)
<a name="dotnet-manifest-arr"></a>

應用程式請求路由 (ARR) 和 URL 重寫模組已預先安裝，並可在 Elastic Beanstalk Windows AMIs 中使用。這些模組使用 ebextensions 或應用程式組態，透過 IIS 組態啟用進階路由案例和 URL 操作。

下列範例顯示簡單的部署資訊清單，其中設定具有自訂連接埠的網站，並結合設定基本 ARR 路由的 ebextensions 組態：

**Example aws-windows-deployment-manifest.json - 簡易 ARR 設定**  

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "websites": [
      {
        "name": "ARRSite",
        "physicalPath": "C:\\inetpub\\wwwroot\\arrsite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "localhost"
          }
        ]
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "BackendApp",
        "parameters": {
          "appBundle": "backend-app.zip",
          "iisWebSite": "ARRSite",
          "iisPath": "/backend"
        }
      }
    ]
  }
}
```

ARR 組態是透過 ebextensions 完成。下列組態會設定基本 ARR 路由規則：

**Example .ebextensions/arr-config.config - 基本 ARR 組態**  

```
files:
  "C:\\temp\\configure-arr.ps1":
    content: |
      # Enable ARR proxy at server level
      Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/proxy' -Name 'enabled' -Value 'True'
      
      # Clear any existing global rules to avoid conflicts
      Clear-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/rewrite/globalRules'

      # Add global rule to route all requests to backend
      Add-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' `
        -Filter 'system.webServer/rewrite/globalRules' `
        -Name '.' `
        -Value @{
          name = 'Route_to_Backend'
          stopProcessing = 'True'
          match = @{ url = '^(?!backend/)(.*)' }
          action = @{
            type = 'Rewrite'
            url = 'http://localhost:8080/backend/{R:1}'
          }
        }

container_commands:
  01_configure_arr:
    command: powershell -ExecutionPolicy Bypass -File "C:\\temp\\configure-arr.ps1"
    waitAfterCompletion: 0
```

此組態會在連接埠 8080 上建立網站，並設定 ARR 將所有傳入請求路由到在該網站上執行的後端應用程式。

## 設定應用程式集區
<a name="dotnet-manifest-apppool"></a>

您可以在 Windows 環境中支援多個應用程式。可採用兩種方法：
+ 您可以使用 Kestrel Web 伺服器的進程外託管模型。使用此模型，您可以將多個應用程式設定為在一個應用程式集區中執行。
+ 您可以使用進程內託管模型。憑藉此模型，您可以使用多個應用程式集區來執行多個應用程式，且每個集區中只有一個應用程式。如果您使用的是 IIS 伺服器，並且需要執行多個應用程式，則必須使用此方法。

若要設定 Kestrel 在一個應用程式集區中執行多個應用程式，請新增 `hostingModel="OutofProcess"` 檔案中的 `web.config`。請考慮下列範例。

**Example web.config - 用於 Kestrel 進程外託管模型**  

```
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add 
    name="aspNetCore" 
    path="*" verb="*" 
    modules="AspNetCoreModuleV2" 
    resourceType="Unspecified" />
</handlers>
<aspNetCore 
    processPath="dotnet" 
    arguments=".\CoreWebApp-5-0.dll" 
    stdoutLogEnabled="false" 
    stdoutLogFile=".\logs\stdout" 
    hostingModel="OutofProcess" />
</system.webServer>
</location>
</configuration>
```

**Example aws-windows-deployment-manifest.json - 多個應用程式**  

```
{
"manifestVersion": 1,
  "deployments": {"msDeploy": [
      {"name": "Web-app1",
        "parameters": {"archive": "site1.zip",
          "iisPath": "/"
        }
      },
      {"name": "Web-app2",
        "parameters": {"archive": "site2.zip",
          "iisPath": "/app2"
        }
      }
    ]
  }
}
```

IIS 不支援一個應用程式集區中有多個應用程式，因為其使用進程內託管模型。因此，您需要透過將每個應用程式指派給一個應用程式集區，來設定多個應用程式。換句話說，只將一個應用程式指派給一個應用程式集區。

您可以將 IIS 設定為在 `aws-windows-deployment-manifest.json` 檔案中使用不同的應用程式集區。在您參考下一個範例檔案時，請進行下列更新：
+ 新增包含名稱為 `iisConfig` 子區段的 `appPools` 區段。
+ 在 `appPools` 區塊中，列出應用程式集區。
+ 在 `deployments` 區段中，為每個應用程式定義 `parameters` 區段。
+ 針對每個應用程式，`parameters` 區段會指定封存檔、執行它的路徑，以及要在其中執行的 `appPool`。

下列部署資訊清單會設定每 10 分鐘重新啟動應用程式的兩個應用程式集區。它們還將其應用程式附加到在指定路徑上執行的 .NET Framework Web 應用程式。

**Example aws-windows-deployment-manifest.json - 每個應用程式集區一個應用程式**  

```
{
"manifestVersion": 1,
  "iisConfig": {"appPools": [
      {"name": "MyFirstPool",
       "recycling": {"regularTimeInterval": 10}
      },
      {"name": "MySecondPool",
       "recycling": {"regularTimeInterval": 10}
      }
     ]
    },
  "deployments": {"msDeploy": [
      {"name": "Web-app1",
        "parameters": {
           "archive": "site1.zip",
           "iisPath": "/",
           "appPool": "MyFirstPool"
           }
      },
      {"name": "Web-app2",
        "parameters": {
           "archive": "site2.zip",
           "iisPath": "/app2",
           "appPool": "MySecondPool"
          }
      }
     ]
    }
}
```

## 定義自訂部署
<a name="dotnet-manifest-custom"></a>

如需進一步控制，您可定義*自訂部署*，藉此完全自訂應用程式部署。

此部署資訊清單會指示 Elastic Beanstalk 在 32 位元模式中執行 PowerShell 指令碼。它指定三個指令碼：在執行個體啟動和部署期間執行的`install`指令碼 (`siteInstall.ps1`)、在部署期間安裝新版本之前執行的`uninstall`指令碼 (`siteUninstall.ps1`)，以及當您在 AWS 管理主控台中選取[重新啟動應用程式伺服器](environments-dashboard-actions.md)時執行的`restart`指令碼 (`siteRestart.ps1`)。

**Example aws-windows-deployment-manifest.json - 自訂部署**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "custom": [
      {
        "name": "Custom site",
        "architecture" : 32,
        "scripts": {
          "install": {
            "file": "siteInstall.ps1"
          },
          "restart": {
            "file": "siteRestart.ps1"
          },
          "uninstall": {
            "file": "siteUninstall.ps1"
          }
        }
      }
    ]
  }
}
```

將執行應用程式所需的成品納入具備資訊清單和指令碼的原始碼套件。

**Example Custom-site-bundle.zip**  

```
.
|-- aws-windows-deployment-manifest.json
|-- siteInstall.ps1
|-- siteRestart.ps1
|-- siteUninstall.ps1
`-- site-contents.zip
```

# 部署資訊清單結構描述參考
<a name="dotnet-manifest-schema"></a>

部署資訊清單是 JSON 檔案，定義 Elastic Beanstalk 應如何部署和設定您的 Windows 應用程式。本節提供資訊清單結構描述中所有支援屬性和組態選項的完整參考。

## 資訊清單結構
<a name="dotnet-manifest-schema-structure"></a>

部署資訊清單遵循具有下列最上層結構的特定 JSON 結構描述：

**Example 基本資訊清單結構**  

```
{
  "manifestVersion": 1,
  "skipIISReset": false,
  "iisConfig": {
    "websites": [...],
    "appPools": [...]
  },
  "deployments": {
    "msDeploy": [...],
    "aspNetCoreWeb": [...],
    "custom": [...]
  }
}
```

### 最上層屬性
<a name="dotnet-manifest-schema-top-level"></a>

`manifestVersion` (必要)  
*類型*：數字  
*預設值*：1  
*有效值：*1  
指定資訊清單結構描述的版本。目前僅支援第 1 版。

`skipIISReset` (選用)  
*類型*：布林值  
*預設：*false  
控制 IIS 是否在應用程式部署期間重設。此旗標同時影響 `msDeploy`和 `aspNetCoreWeb` 部署類型。  
*行為：*  
+ *未指定 或 `false`（預設）：*IIS 重設會在安裝、解除安裝和更新操作期間執行。這是傳統行為。
+ *`true`：*部署操作期間會略過 IIS 重設。
*優點：*  
+ *減少停機時間* – 應用程式在部署期間遇到較短的服務中斷。
+ *更快速的部署* – 消除 IIS 完全重新啟動並重新初始化所需的時間。
使用 時`skipIISReset`， [RestartAppServer](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html) 操作會執行 IIS 重設，無論此旗標設定為何。
*範例*：  

```
{
  "manifestVersion": 1,
  "skipIISReset": true,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

`deployments` (必要)  
*類型：*物件  
包含您應用程式的部署組態。此物件可以包含 `msDeploy`、 `aspNetCoreWeb`和 `custom` 部署類型。

`iisConfig` (選用)  
*類型：*物件  
在部署應用程式之前，定義要套用的 IIS 組態設定。同時支援網站和應用程式集區組態。

## IIS 組態
<a name="dotnet-manifest-schema-iis-config"></a>

`iisConfig` 本節可讓您在部署應用程式之前設定 IIS 設定。這包括使用特定組態設定應用程式集區，以及使用自訂繫結設定 IIS 網站。

### IIS 網站
<a name="dotnet-manifest-schema-websites"></a>

IIS 網站可讓您在部署應用程式之前設定自訂網站設定，包括實體路徑和網路繫結。

**建立不同 IIS 網站的重要考量事項**  
*網站設定順序：*網站會依顯示在`websites`陣列中的順序依序設定。平台會依序處理每個網站組態，因此如果您在網站之間有相依性，請務必正確排序。
*防火牆和連接埠存取：*只有連接埠 80 會透過預設 Elastic Beanstalk Windows 防火牆組態自動公開。如果您將網站設定為使用非標準連接埠，則必須透過 ebextensions 或自訂部署指令碼定義自訂防火牆規則，以允許外部存取這些連接埠。

**Example 網站組態**  

```
{
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          },
          {
            "protocol": "https",
            "port": 8443
          }
        ]
      }
    ]
  }
}
```網站屬性

`name` (必要)  
*類型：*字串  
IIS 網站的名稱。此名稱用於識別 IIS Manager 中的網站，而且在 IIS 組態中必須是唯一的。

`physicalPath` (必要)  
*類型：*字串  
存放網站檔案之伺服器上的實體路徑。此路徑必須可供 IIS 工作者程序存取。

`bindings` (必要)  
*類型*：陣列  
*最少項目：*1  
一系列繫結組態，定義網站如何回應網路請求。每個繫結都會指定通訊協定、連接埠和選用主機名稱。

#### 網站繫結
<a name="dotnet-manifest-schema-bindings"></a>

網站繫結定義 IIS 網站接聽傳入請求的網路端點。

`protocol` (必要)  
*類型：*字串  
*有效值：*"http"、"https"  
用於繫結的通訊協定。

`port` (必要)  
*類型*：整數  
*有效範圍：*1-65535  
網站將接聽請求的連接埠號碼。

`hostName` (選用)  
*類型：*字串  
繫結的主機名稱 （網域名稱）。

### 應用程式集區
<a name="dotnet-manifest-schema-app-pools"></a>

應用程式集區可在應用程式之間提供隔離，並可讓您設定應用程式群組的執行時間設定。

**Example 應用程式集區組態**  

```
{
  "iisConfig": {
    "appPools": [
      {
        "name": "MyAppPool",
        "enable32Bit": false,
        "managedPipelineMode": "Integrated",
        "managedRuntimeVersion": "v4.0",
        "queueLength": 1000,
        "cpu": {
          "limitPercentage": 80,
          "limitAction": "Throttle",
          "limitMonitoringInterval": 5
        },
        "recycling": {
          "regularTimeInterval": 1440,
          "requestLimit": 10000,
          "memory": 1048576,
          "privateMemory": 524288
        }
      }
    ]
  }
}
```應用程式集區屬性

`name` (必要)  
*類型：*字串  
應用程式集區的名稱。此名稱用於參考部署組態中的集區。

`enable32Bit` (選用)  
*類型*：布林值  
讓 32 位元應用程式在 64 位元版本的 Windows 上執行。對於需要 32 位元相容性的舊版應用程式，`true`請將 設定為 。

`managedPipelineMode` (選用)  
*類型：*字串  
*有效值：*"Integrated"、"Classic"  
指定應用程式集區的請求處理模式。

`managedRuntimeVersion` (選用)  
*類型：*字串  
*有效值：*「無受管程式碼」、「v2.0」、「v4.0」  
指定應用程式集區的 .NET Framework 版本。

`queueLength` (選用)  
*類型*：整數  
拒絕其他請求之前，HTTP.sys 佇列的應用程式集區的請求數目上限。

#### CPU 組態
<a name="dotnet-manifest-schema-cpu-config"></a>

`cpu` 物件會設定應用程式集區的 CPU 用量限制和監控。

`limitPercentage` (選用)  
*類型*：數字  
應用程式集區中的工作者程序可以使用的 CPU 時間百分比上限。

`limitAction` (選用)  
*類型：*字串  
*有效值：*"NoAction"、"KillW3wp"、"Throttle"、"ThrottleUnderLoad"  
達到 CPU 限制時要採取的動作。

`limitMonitoringInterval` (選用)  
*類型*：數字  
重設 CPU 監控和限流限制的期間 （以分鐘為單位）。

#### 回收組態
<a name="dotnet-manifest-schema-recycling-config"></a>

`recycling` 物件會設定應用程式集區工作者程序的回收時間和方式。

`regularTimeInterval` (選用)  
*類型*：整數  
應用程式集區回收的時間間隔 （以分鐘為單位）。設為 0 可停用以時間為基礎的回收。

`requestLimit` (選用)  
*類型*：整數  
應用程式集區在回收之前處理的請求數量上限。

`memory` (選用)  
*類型*：整數  
觸發工作者程序回收的虛擬記憶體數量 （以 KB 為單位）。

`privateMemory` (選用)  
*類型*：整數  
觸發工作者程序回收的私有記憶體數量 （以 KB 為單位）。

## 部署類型
<a name="dotnet-manifest-schema-deployments"></a>

`deployments` 物件包含不同應用程式類型的部署組態陣列。每個部署類型都有特定的屬性和使用案例。

### MSDeploy 部署
<a name="dotnet-manifest-schema-msdeploy"></a>

MSDeploy 部署用於可使用 Web 部署 (MSDeploy) 部署的傳統 .NET Framework 應用程式。

**Example MSDeploy 部署組態**  

```
{
  "deployments": {
    "msDeploy": [
      {
        "name": "WebApp",
        "description": "Main web application",
        "parameters": {
          "appBundle": "webapp.zip",
          "iisPath": "/",
          "appPool": "DefaultAppPool"
        }
      }
    ]
  }
}
```MSDeploy 部署屬性

`name` (必要)  
*類型：*字串  
部署的唯一名稱。此名稱在資訊清單中的所有部署中必須是唯一的。

`description` (選用)  
*類型：*字串  
部署的人類可讀描述。

`parameters` (必要)  
*類型：*物件  
MSDeploy 操作的組態參數。

`scripts` (選用)  
*類型：*物件  
要在部署生命週期的各個階段執行的 PowerShell 指令碼。

#### MSDeploy 參數
<a name="dotnet-manifest-schema-msdeploy-parameters"></a>

`appBundle` (必要)  
*類型：*字串  
相對於資訊清單檔案的應用程式套件 (ZIP 檔案） 路徑。此套件包含要部署的應用程式檔案。

`iisWebSite` (選用)  
*類型：*字串  
*預設：*「預設網站」  
要部署應用程式的 IIS 網站。根據預設，應用程式會部署到「預設網站」。或者，您可以指定不同的網站名稱，例如在 `iisConfig.websites`區段中設定的網站名稱。

`iisPath` (選用)  
*類型：*字串  
*預設：*"/"  
IIS 中的虛擬目錄路徑，其中將部署應用程式。將 "/" 用於根路徑，或將 "/api" 用於子目錄。

`appPool` (選用)  
*類型：*字串  
執行此應用程式的應用程式集區名稱。

### ASP.NET Core 部署
<a name="dotnet-manifest-schema-aspnetcore"></a>

ASP.NET Core 部署專為 .NET Core 和 .NET 5\$1 應用程式而設計。

**Example ASP.NET Core 部署組態**  

```
{
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "CoreAPI",
        "description": "ASP.NET Core Web API",
        "parameters": {
          "appBundle": "coreapi.zip",
          "iisPath": "/api",
          "appPool": "CoreAppPool"
        }
      }
    ]
  }
}
```

ASP.NET Core 部署使用與 MSDeploy 部署相同的屬性結構，主要差異在於用於應用程式的執行期環境和託管模型。ASP.NET Core 部署參數

`appBundle` (必要)  
*類型：*字串  
相對於資訊清單檔案的應用程式套件路徑。這可以是 ZIP 封存檔或包含已發佈 ASP.NET Core 應用程式的目錄路徑。

`iisWebSite` (選用)  
*類型：*字串  
*預設：*「預設網站」  
要部署 ASP.NET Core 應用程式的 IIS 網站。根據預設，應用程式會部署到「預設網站」。或者，您可以指定不同的網站名稱，例如在 `iisConfig.websites`區段中設定的網站名稱。

`iisPath` (選用)  
*類型：*字串  
*預設：*"/"  
ASP.NET Core 應用程式的 IIS 虛擬目錄路徑。

`appPool` (選用)  
*類型：*字串  
ASP.NET Core 應用程式的應用程式集區。集區將針對 ASP.NET Core 託管進行適當設定。

### 自訂部署
<a name="dotnet-manifest-schema-custom"></a>

自訂部署可透過 PowerShell 指令碼完整控制部署程序。此部署類型適用於需要自訂安裝、組態或部署邏輯的複雜案例。

**Example 自訂部署組態**  

```
{
  "deployments": {
    "custom": [
      {
        "name": "CustomService",
        "description": "Custom Windows service deployment",
        "architecture": 32,
        "scripts": {
          "install": {
            "file": "install-service.ps1"
          },
          "restart": {
            "file": "restart-service.ps1"
          },
          "uninstall": {
            "file": "uninstall-service.ps1",
            "ignoreErrors": true
          }
        }
      }
    ]
  }
}
```自訂部署屬性

`name` (必要)  
*類型：*字串  
自訂部署的唯一名稱。

`description` (選用)  
*類型：*字串  
自訂部署的說明。

`architecture` (選用)  
*類型*：整數  
*預設：*32  
*有效值：*32、64  
powershell 指令碼執行模式的架構規格

`scripts` (必要)  
*類型：*物件  
定義部署行為的 PowerShell 指令碼。相較於其他部署類型，自訂部署支援其他指令碼類型。

## 部署指令碼
<a name="dotnet-manifest-schema-scripts"></a>

部署指令碼是在部署生命週期內特定時間點執行的 PowerShell 指令碼。不同的部署類型支援不同的指令碼事件集。

### 指令碼事件
<a name="dotnet-manifest-schema-script-events"></a>

視部署類型而定，可使用下列指令碼事件：標準部署指令碼 (msDeploy 和 aspNetCoreWeb)

`preInstall`  
在安裝或更新應用程式之前執行。

`postInstall`  
在應用程式安裝或更新後執行。

`preRestart`  
在應用程式重新啟動之前執行。

`postRestart`  
重新啟動應用程式後執行。

`preUninstall`  
在解除安裝應用程式之前執行。

`postUninstall`  
解除安裝應用程式後執行。自訂部署指令碼 （僅限自訂部署）

`install`  
自訂部署的主要安裝指令碼。此指令碼負責安裝應用程式或服務。

`restart`  
用來重新啟動應用程式或服務的指令碼。環境重新啟動時呼叫。

`uninstall`  
解除安裝應用程式或服務的指令碼。在環境終止或應用程式移除期間呼叫。

### 指令碼屬性
<a name="dotnet-manifest-schema-script-properties"></a>

每個指令碼都定義為具有下列屬性的物件：

`file` (必要)  
*類型：*字串  
相對於資訊清單檔案的 PowerShell 指令碼檔案路徑。指令碼應該有`.ps1`副檔名。

`ignoreErrors` (選用)  
*類型*：布林值  
*預設：*false  
設為 時`true`，即使指令碼失敗，部署仍會繼續。將此用於非關鍵指令碼或清除操作。

**Example 指令碼組態範例**  

```
{
  "scripts": {
    "preInstall": {
      "file": "backup-config.ps1",
      "ignoreErrors": true
    },
    "postInstall": {
      "file": "configure-app.ps1"
    }
  }
}
```

# 搭配 Windows 平台分支使用 EC2 Fast Launch
<a name="dotnet-ec2fastlaunch"></a>

EC2 Fast Launch 功能可減少 Elastic Beanstalk 環境中的 Windows 執行個體啟動時間。本主題的目的是引導您搭配 Elastic Beanstalk 環境使用此功能。從 2[025 年 1 月 22 日發行的 Windows 平台 2.16.2 ](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-01-22-windows.html)版開始，Elastic Beanstalk 平台版本包含已啟用 EC2 Fast Launch 的基本 AMIs。

## 預設 EC2 Fast Launch 可用性
<a name="dotnet-ec2fastlaunch-default"></a>

最新的 Elastic Beanstalk Windows 平台版本包括自動啟用 EC2 Fast Launch 的基本 AMIs，無需額外費用。不過，發行較新的平台版本時，EC2 Fast Launch 可能不會在較舊平台版本的基礎 AMIs 上自動啟用。

我們建議您升級至最新的 Windows 平台版本，以使用自動啟用 EC2 Fast Launch 的基礎 AMIs。不過，如果您需要繼續使用現有的平台版本，您可以在環境的基礎 AMI 上手動啟用 EC2 Fast Launch。如需說明，請參閱[手動設定 EC2 Fast Launch](#dotnet-ec2fastlaunch-manual)。

## 手動設定 EC2 Fast Launch
<a name="dotnet-ec2fastlaunch-manual"></a>

**注意**  
相較於使用自動啟用 EC2 Fast Launch 的平台版本，手動啟用 EC2 Fast Launch 可能會產生額外的成本。如需 EC2 Fast Launch 成本的詳細資訊，請參閱《Amazon [ EC2 使用者指南》中的 EC2 Fast Launch 基礎資源的管理成本](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/win-fast-launch-manage-costs.html)頁面。 *Amazon EC2 *

請依照下列步驟，在 Elastic Beanstalk 環境所使用的 Windows 基礎 AMI 上啟用 EC2 Fast Launch：

**為 Elastic Beanstalk 環境手動啟用 EC2 Fast Launch**

1. 識別您環境的基本 AMI：

   請依照[建立自訂 AMI](using-features.customenv.md) 中的步驟來識別您環境的基本 AMI ID。請注意，您不需要建立自訂 AMI - 您只需遵循步驟來尋找目前的基本 AMI ID。

1. 在 AMI 上啟用 EC2 Fast Launch：

   使用《Amazon [ EC2 使用者指南》中的啟用 EC2 Fast Launch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/win-fast-launch-configure.html) 中的指示，為您的 AMI 設定 EC2 Fast Launch。 *Amazon EC2 * 

# 將 Amazon RDS 資料庫執行個體新增到您的 .NET 應用程式環境
<a name="create_deploy_NET.rds"></a>

本主題提供了使用 Elastic Beanstalk 主控台建立 Amazon RDS 的說明。您可以使用 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體存放由應用程式收集與修改的資料。資料庫可與環境耦合並由 Elastic Beanstalk 管理，或者由另一項服務在外部分開建立與管理。在這些指示中，資料庫會與您的環境耦合，並由 Elastic Beanstalk 管理。如需將 Amazon RDS 與 Elastic Beanstalk 整合的相關詳細資訊，請參閱 [將資料庫新增至您的 Elastic Beanstalk 環境](using-features.managing.db.md)。

**Topics**
+ [將資料庫執行個體新增到您的環境](#dotnet-rds-create)
+ [下載驅動程式](#dotnet-rds-drivers)
+ [連線至資料庫](#dotnet-rds-connect)

## 將資料庫執行個體新增到您的環境
<a name="dotnet-rds-create"></a>

**欲將資料庫執行個體新增到您的環境**

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

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

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

1. 在 **Database (資料庫)** 組態類別中，選擇 **Edit (編輯)**。

1. 選擇資料庫引擎，並輸入使用者名稱和密碼。

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

新增資料庫執行個體約需要 10 分鐘。環境更新完成時，資料庫執行個體的主機名稱和其他連線資訊會透過下列環境屬性提供給您的應用程式：


| 屬性名稱 | 描述 | 屬性值 | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  資料庫執行個體的主機名稱。  |  在 Amazon RDS 主控台：**端點**的**連線能力和安全性**索引標籤上。  | 
|  `RDS_PORT`  |  資料庫執行個體接受連線的連接埠。預設值在不同資料庫引擎中有所差異。  |  在 Amazon RDS 主控台：**連接埠**的**連線能力和安全性**索引標籤上。  | 
|  `RDS_DB_NAME`  |  資料庫名稱，**ebdb**。  |  在 Amazon RDS 主控台：**資料庫名稱**的**組態**索引標籤上。  | 
|  `RDS_USERNAME`  |  您為資料庫設定的使用者名稱。  |  在 Amazon RDS 主控台：**主要使用者名稱**的**組態**索引標籤上。  | 
|  `RDS_PASSWORD`  |  您為資料庫設定的密碼。  |  無法在 Amazon RDS 主控台中提供參考。  | 

如需設定與 Elastic Beanstalk 環境耦合之資料庫執行個體的相關詳細資訊，請參閱 [將資料庫新增至您的 Elastic Beanstalk 環境](using-features.managing.db.md)。

## 下載驅動程式
<a name="dotnet-rds-drivers"></a>

利用 `EntityFramework` 來下載和安裝您的開發環境適用的 `NuGet` 套件與資料庫驅動程式。

**適用於 .NET 的常見實體架構資料庫供應商**
+ **SQL Server** – `Microsoft.EntityFrameworkCore.SqlServer`
+ **MySQL** – `Pomelo.EntityFrameworkCore.MySql`
+ **PostgreSQL** – `Npgsql.EntityFrameworkCore.PostgreSQL`

## 連線至資料庫
<a name="dotnet-rds-connect"></a>

Elastic Beanstalk 會在環境屬性中提供已連接的資料庫執行個體連線資訊。使用 `ConfigurationManager.AppSettings` 來讀取屬性和設定資料庫的連線。

**Example Helpers.cs - 連線字串方法**  

```
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;

namespace MVC5App.Models
{
  public class Helpers
  {
    public static string GetRDSConnectionString()
    {
      var appConfig = ConfigurationManager.AppSettings;

      string dbname = appConfig["RDS_DB_NAME"];

      if (string.IsNullOrEmpty(dbname)) return null;

      string username = appConfig["RDS_USERNAME"];
      string password = appConfig["RDS_PASSWORD"];
      string hostname = appConfig["RDS_HOSTNAME"];
      string port = appConfig["RDS_PORT"];

      return "Data Source=" + hostname + ";Initial Catalog=" + dbname + ";User ID=" + username + ";Password=" + password + ";";
    }
  }
}
```

使用連線字串來將您的資料庫內容初始化。

**Example DBContext.cs**  

```
using System.Data.Entity;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;

namespace MVC5App.Models
{
  public class RDSContext : DbContext
  { 
    public RDSContext()
      : base(GetRDSConnectionString())
    {
    }

    public static RDSContext Create()
    {
      return new RDSContext();
    }
  }
}
```

# 的 AWS Toolkit for Visual Studio
<a name="dotnet-toolkit"></a>

Visual Studio 提供範本供不同程式設計語言及應用程式類型使用，您可從這些範本入門。 AWS Toolkit for Visual Studio 也提供三個專案範本，可引導應用程式的開發： AWS 主控台專案、 AWS Web 專案和 AWS 空專案。在此範例中，您將建立新的 ASP.NET Web 應用程式。

**欲建立新的 ASP.NET Web 應用程式專案**

1. 在 Visual Studio 中，於 **File (檔案)** 選單按一下 **New (新增)**，然後按一下 **Project (專案)**。

1. 在 **New Project (新增專案)** 對話方塊中，按一下 **Installed Templates (已安裝的範本)**、按一下 **Visual C\$1**，然後按一下 **Web**。按一下 **ASP.NET Empty Web Application (ASP.NET 空白 Web 應用程式)**，輸入專案名稱，然後按一下 **OK (確定)**。

**欲執行專案**

請執行下列其中一項：

1. 按 **F5**。

1. 在 **Debug (除錯)** 選單中，選擇 **Start Debugging (開始除錯)**。

## 本機測試
<a name="create_deploy_NET.sdlc.testlocal"></a>

Visual Studio 可讓您輕鬆於本機測試應用程式。欲測試或執行 ASP.NET Web 應用程式，您需要 Web 伺服器。Visual Studio 提供多種選項，例如網際網路資訊服務 (IIS)、IIS Express 或內建的 Visual Studio 程式開發伺服器。欲了解這些選項並決定哪種最適合您，請參閱 [Visual Studio 中 ASP.NET Web 專案的 Web 伺服器](http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx)。

## 建立 Elastic Beanstalk 環境
<a name="create_deploy_NET.sdlc.deploy"></a>

測試應用程式後，即可準備將其部署至 Elastic Beanstalk。

**注意**  
[組態檔案](ebextensions.md)須為封存檔內含專案的一部分。或者，若未將組態檔案納入專案，您可使用 Visual Studio 來部署專案資料夾中的所有檔案。在 **Solution Explorer (方案總管)** 中，在專案名稱上按一下滑鼠右鍵，然後選擇 **Properties (屬性)**。按一下 **Package/Publish Web (封裝/發行 Web)** 索引標籤。在 **Items to deploy (要部署的項目)** 區段，於下拉式清單選取 **All Files in the Project Folder (此專案資料夾中的所有檔案)**。

**使用適用於 Visual Studio AWS 的工具組將應用程式部署至 Elastic Beanstalk**

1. 在 **Solution Explorer** 中，在應用程式上按一下滑鼠右鍵，然後選取**發佈至 AWS**。

1. 在 **Publish to AWS(發佈至 AWS)** 精靈中，輸入您的帳戶資訊。

   1. 在 **AWS account to use for deployment (用於部署的AWS 帳戶)** 部分，選取您的帳戶，或選取 **Other (其他)** 來輸入新的帳戶資訊。

   1. 在 **Region (區域)** 部分，選取您欲部署應用程式的區域。如需可用 AWS 區域的資訊，請參閱《[AWS Elastic Beanstalk 》中的端點和配額](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)*AWS 一般參考*。若您選擇的區域不受 Elastic Beanstalk 支援，將無法選擇部署至 Elastic Beanstalk 的選項。

   1.  按一下 **Deploy new application with template (以範本部署新的應用程式)**，然後選取 **Elastic Beanstalk**。然後按一下 **Next (下一步)**。  
![\[發佈至 AWS 精靈 1\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-create-newapp-template.png)

1. 在 **Application (應用程式)** 頁面，輸入您的應用程式詳細資訊。

   1. 在 **Name (名稱)** 的部分，輸入應用程式的名稱。

   1. 在 **Description** (描述) 的部分，輸入應用程式的描述。此步驟為選用。

   1. 應用程式的版本標籤會自動顯示在 **Deployment version label (部署版本標籤)** 中。

   1. 選取 **Deploy application incrementally (漸進部署應用程式)**，可僅部署已變更的檔案。漸進部署速度較快，因為您僅需更新已變更的檔案，而非所有檔案。若您選擇此選項，應用程式版本會自 Git commit ID 進行設定。若您未選擇漸進部署應用程式，則可在 **Deployment version label (部署的版本標籤)** 方塊中更新版本標籤。  
![\[發行到 Beanstalk 精靈 2\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk1.png)

   1. 按一下**下一步**。

1. 在 **Environment (環境)** 頁面中，描述您的環境詳細資訊。

   1. 選取 **Create a new environment for this application (為此應用程式建立新環境)**。

   1. 在 **Name (名稱)** 的部分，輸入環境名稱。

   1. 在 **Description (描述)** 的部分，說明您的環境。此步驟為選用。

   1. 選取您想要的環境 **Type (類型)**。

      您可以選取 **Load balanced, auto scaled (負載平衡、自動調整規模)** 或 **Single instance (單一執行個體)** 環境。如需更多詳細資訊，請參閱 [環境類型](using-features-managing-env-types.md)。

       
**注意**  
以單一執行個體環境而言，負載平衡、Auto Scaling 和運作狀態檢查 URL 設定均不適用。

   1. 將游標移至 **Environment URL (環境 URL)** 方塊，將自動顯示環境 URL。

   1. 按一下 **Check availability (檢查可用性)**，以確認可用該環境 URL。  
![\[發行到 Beanstalk 精靈 3\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk2.png)

   1. 按一下**下一步**。

1. 在 **AWS Options** ( 選項) 頁面，設定部署的其他選項和安全資訊。

   1.  在 **Container Type (容器類型)** 的部分，選取 **64bit Windows Server 2012 running IIS 8 (執行 IIS 8 的 64 位元 Windows Server 2012)** 或 **64bit Windows Server 2008 running IIS 7.5 (執行 IIS 7.5 的 64 位元 Windows Server 2008)**。

   1. 在 **Instance Type (執行個體類型)** 的部分，選取 **Micro (微型)**。

   1. 在 **Key pair (金鑰對**) 的部分，選取 **Create new key pair (建立新的金鑰對)**。輸入新的金鑰對名稱 — 以此範例而言，我們使用 **myuswestkeypair**，然後按一下 **OK (確定)**。金鑰對可啟用您 Amazon EC2 執行個體的遠端桌面存取。如需 Amazon EC2 金鑰對的詳細資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的[使用登入資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-credentials.html)。

   1. 選取執行個體描述檔。

      若您沒有執行個體描述檔，請選取 **Create a default instance profile (建立預設執行個體描述檔)**。如需有關搭配 Elastic Beanstalk 使用執行個體描述檔的詳細資訊，請參閱[管理 Elastic Beanstalk 執行個體描述檔](iam-instanceprofile.md)。

   1. 若您擁有自訂 VPC，且希望環境與其搭配使用，按一下 **Launch into VPC (啟動至 VPC)**。您可於下個頁面設定 VPC 資訊。如需 Amazon VPC 的詳細資訊，請參閱 [Amazon Virtual Private Cloud (Amazon VPC)](https://aws.amazon.com/vpc/)。如需支援的非舊式容器類型的清單，請參閱 [為何部分平台版本標記為舊版？](using-features.migration.md#using-features.migration.why)  
![\[發行到 Beanstalk 精靈 4\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_iam.png)

   1.  按一下**下一步**。

1. 若您選擇於 VPC 內啟動您的環境，將顯示 **VPC Options (VPC 選項)** 頁面，否則會出現 **Additional Options (其他選項)** 頁面。您可在此設定 VPC 選項。  
![\[適用於有負載平衡且可擴展環境的 VPC 選項\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_vpc.png)  
![\[單一執行個體環境的 VPC 選項\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_vpc-single.png)

   1. 選取啟動您環境所在 VPC 的 VPC ID。

   1. 對於有負載平衡且可擴展的環境而言，若您不希望 Elastic Load Balancer 可自網際網路取得，請於**ELB 機制** 選取**私有**。

      以單一執行個體環境而言，此選項不適用，因為環境沒有負載平衡器。如需更多詳細資訊，請參閱 [環境類型](using-features-managing-env-types.md)。

   1. 對於有負載平衡且可擴展的環境而言，請為 Elastic Load Balancer 和 EC2 執行個體選取子網路。若您已建立公有和私有子網路，請確認彈性負載平衡器和 EC2 執行個體與正確的子網路建立關聯。根據預設，Amazon VPC 建立的預設公有和私有子網路，分別使用 10.0.0.0/24 和 10.0.1.0/24。您可以前往 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)，在 Amazon VPC 主控台中檢視現有的子網路。

      以單一執行個體環境而言，您的 VPC 只需要公有子網路供執行個體使用。選取負載平衡器的子網路並不適用，因為環境沒有負載平衡器。如需更多詳細資訊，請參閱 [環境類型](using-features-managing-env-types.md)。

   1. 對於有負載平衡且可擴展的環境而言，請選取您已為執行個體建立的安全群組 (如適用)。

      以單一執行個體環境而言，您不需要 NAT 裝置。選取預設安全群組。Elastic Beanstalk 會將彈性 IP 地址指派給執行個體，讓其能夠存取網際網路。

   1. 按一下**下一步**。

1. 在 **Application Options (應用程式選項)** 頁面，設定您的應用程式選項。

   1. 在 Target framework (目標架構) 的部分，選取 **.NET Framework 4.0**。

   1. Elastic Load Balancing 使用運作狀態檢查，來判斷執行您應用程式的 Amazon EC2 執行個體狀態是否健全。運作狀態檢查會在設定的間隔時間探測指定的 URL，藉以判斷執行個體的運作狀態。您可於 **Application health check URL (應用程式運作狀態檢查 URL)** 方塊中輸入與應用程式現有資源相符的 URL (如 `/myapp/index.aspx`)，藉此覆寫預設 URL。如需應用程式運作狀態檢查的詳細資訊，請參閱 [運作狀態檢查](environments-cfg-clb.md#using-features.managing.elb.healthchecks)。

   1. 若您希望接收 Amazon Simple Notification Service (Amazon SNS) 的通知，取得影響您的應用程式的重要事件，請輸入電子郵件地址。

   1. **Application Environment (應用程式環境)** 區段可讓您針對執行您應用程式的 Amazon EC2 執行個體，來指定其上的環境變數。由於您在環境間移動不再需要重新編譯原始碼，因此本設定可提高可攜性。

   1. 選取您部署應用程式欲使用的應用程式登入資料選項。  
![\[發行到 Beanstalk 精靈 6\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3a.png)

   1. 按一下**下一步**。

1. 若您之前已設定 Amazon RDS 資料庫，將出現 **Amazon RDS DB Security Group (Amazon RDS 資料庫安全群組)** 頁面。若您希望將 Elastic Beanstalk 環境連接至您的 Amazon RDS 資料庫執行個體，請選取一個或多個安全群組。否則，請進行下一個步驟。當您就緒後，按一下 **Next (下一步)**。  
![\[發行到 Beanstalk 精靈 7\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk6b.png)

1.  檢閱您的部署選項。若所有內容均正確，按一下 **Deploy (部署)**。  
![\[發行到 Beanstalk 精靈 8\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk4.png)

   您的 ASP.NET 專案將匯出為 Web 部署檔案，上傳至 Amazon S3，並使用 Elastic Beanstalk 註冊為新的應用程式版本。Elastic Beanstalk 部署功能將監控您的環境，直到其具備新部署的程式碼且變為可用。在 env:<environment name> (環境：<環境名稱>) 索引標籤中，您將看到環境的狀態。  
![\[環境狀態\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-env-status.png)

## 終止環境
<a name="create_deploy_NET.terminating"></a>

若要避免未使用的 AWS 資源產生費用，您可以使用 AWS Toolkit for Visual Studio 終止執行環境。

**注意**  
 您稍後可隨時運用相同版本啟動新的環境。

**終止環境**

1.  在 **AWS Explorer** 中，展開 Elastic Beanstalk 節點和應用程式節點。以滑鼠右鍵按一下您的應用程式環境，然後選取 **Terminate Environment (終止環境)**。

1. 提示出現時，按一下 **Yes (是)** 以確認您希望終止該環境。Elastic Beanstalk 需要幾分鐘的時間來終止環境中執行 AWS 的資源。  
![\[Elastic Beanstalk 終止環境對話方塊\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-terminate-confirm.png)
**注意**  
當您終止環境後，與該終止環境相關聯的 CNAME 可供任何人使用。

# 部署至您的環境
<a name="create_deploy_NET.sdlc.create.edit"></a>

在您測試應用程式之後，即可輕鬆加以編輯並重新部署您的應用程式，並立刻查看結果。

 **欲編輯並重新部署您的 ASP.NET Web 應用程式** 

1.  在 **Solution Explorer (方案總管)** 中，請以滑鼠右鍵按一下您的應用程式，然後按一下 **Republish to Environment <*your environment name*> (重新發佈至環境 &lt;您的環境名稱&gt;)**。**Re-publish to AWS Elastic Beanstalk(重新發佈至 AWS Elastic Beanstalk)** 精靈會開啟。  
![\[發行到 Beanstalk 精靈 1\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-republish-beanstalk-sameenv.png)

1.  檢視您的部署詳細資訊，然後按一下 **Deploy (部署)**。
**注意**  
如果要變更任何設定，您可按一下 **Cancel (取消)** 並改為使用 **Publish to AWS(發佈至 AWS)** 精靈。如需說明，請參閱「[建立 Elastic Beanstalk 環境](dotnet-toolkit.md#create_deploy_NET.sdlc.deploy)」。

   您已更新的 ASP.NET Web 專案將匯出為具有新版本標籤的 Web 部署檔案，上傳至 Amazon S3，並使用 Elastic Beanstalk 註冊為新的應用程式版本。Elastic Beanstalk 部署功能會監控您的現有環境，直到其具備新部署的程式碼且變為可用。在 **env:<*environment name*> (環境：&lt;環境名稱&gt;)** 索引標籤中，您將看到環境的狀態。

您亦可將現有應用程式部署至現有環境 (例如，若您需要還原至之前的應用程式版本)。

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

1. 在 **AWS Explorer** 中展開 Elastic Beanstalk 節點，以滑鼠右鍵按一下 Elastic Beanstalk 應用程式。選取 **View Status (檢視狀態)**。

1. 在 **App: <*application name*> (應用程式：&lt;應用程式名稱&gt;)** 索引標籤中，按一下 **Versions (版本)**。  
![\[應用程式版本\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-app-version.png)

1. 按一下您欲部署的應用程式版本，然後按一下 **Publish Version (發佈版本)**。

1.  在 **Publish Application Version (發佈應用程式版本)** 精靈中，按一下 **Next (下一步)**。  
![\[發佈應用程式版本精靈 1\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-republish-beanstalk2a.png)

1.  檢視您的部署選項，然後按一下 **Deploy (部署)**。  
![\[發佈應用程式版本精靈 2\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-publish-app-version-wizard3.png)

   您的 ASP.NET 專案將匯出為 Web 部署檔案並上傳至 Amazon S3。Elastic Beanstalk 部署功能將監控您的環境，直到其具備新部署的程式碼且變為可用。在 **env:<*environment name*>** (環境：<環境名稱>) 索引標籤中，您將看到環境的狀態。

# 管理您的 Elastic Beanstalk 應用程式環境
<a name="create_deploy_NET.managing"></a>

透過 AWS Toolkit for Visual Studio 和管理 AWS 主控台，您可以變更應用程式環境所用 AWS 資源的佈建和組態。如需如何使用 AWS 管理主控台管理應用程式環境的資訊，請參閱 [管理 Elastic Beanstalk 環境](using-features.managing.md)。本節討論您可於 AWS Toolkit for Visual Studio 編輯的特定服務設定，做為應用程式環境資訊的一部分。

## 變更環境資訊設定
<a name="create_deploy_NET.managing.env"></a>

部署應用程式時，Elastic Beanstalk 會設定許多 AWS 雲端運算服務。您可以使用 AWS Toolkit for Visual Studio 控制這些個別服務的設定方式。

**欲編輯應用程式的環境設定**
+ 展開 Elastic Beanstalk 節點和您的應用程式節點。然後以滑鼠右鍵按一下 **AWS Explorer** 中的 Elastic Beanstalk 環境。選取 **View Status (檢視狀態)**。

  您現可進行下列設定：
  + 伺服器
  + 負載平衡
  + 自動擴展
  + 通知
  + 環境屬性

# 使用適用於 Visual Studio AWS 的工具組設定 EC2 伺服器執行個體
<a name="create_deploy_NET.managing.ec2"></a>

Amazon Elastic Compute Cloud (Amazon EC2) 是一種 Web 服務，可用於在 Amazon 資料中心啟動並管理伺服器執行個體。您可隨時使用 Amazon EC2 伺服器執行個體，無時間限制，且任何法律用途皆可。執行個體具備不同的大小與組態。如需詳細資訊，請前往 [Amazon EC2](https://aws.amazon.com/ec2/)。

您可以使用 AWS Toolkit for Visual Studio 中應用程式環境標籤內的**伺服器**索引標籤來編輯 Elastic Beanstalk 環境的 Amazon EC2 執行個體組態。

![\[Elastic Beanstalk 伺服器組態面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-server.png)


## Amazon EC2 執行個體類型
<a name="create_deploy_NET.managing.ec2.instancetypes"></a>

**Instance type (執行個體類型)** 顯示您 Elastic Beanstalk 應用程式可用的執行個體類型。請變更執行個體類型，以選取具有最適合您應用程式之特性 (包含記憶體大小和 CPU 能力) 的伺服器。例如，需要進行大量及長時間操作的應用程式可要求更多 CPU 或記憶體。

如需有關您 Elastic Beanstalk 應用程式可用之 Amazon EC2 執行個體類型的詳細資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。

## Amazon EC2 安全群組
<a name="create_deploy_NET.managing.ec2.securitygroups"></a>

您可使用「Amazon EC2 安全群組」**來控制 Elastic Beanstalk 應用程式的存取。安全群組會定義您的執行個體的防火牆規則。這些規則會指定哪些輸入 (即傳入) 網路流量應傳送至您的執行個體。所有其他傳入流量將被捨棄。您可隨時修改群組的規則。新規則會自動於所有執行中的執行個體以及未來啟動的執行個體上實施。

您可以使用 AWS 管理主控台或使用 AWS Toolkit for Visual Studio 來設定 Amazon EC2 安全群組。在 **EC2 Security Groups (EC2 安全群組)** 文字方塊中輸入一個或多個 Amazon EC2 安全群組的名稱 (以逗號分隔)，您可藉此指定哪些 Amazon EC2 安全群組可控制您 Elastic Beanstalk 應用程式的存取。

**注意**  
欲啟用應用程式的運作狀態檢查，請確認可自來源 CIDR 範圍 0.0.0.0/0 存取連接埠 80 (HTTP)。如需運作狀態檢查的詳細資訊，請參閱 [運作狀態檢查](create_deploy_NET.managing.elb.md#create_deploy_NET.managing.elb.healthchecks)。

**使用 AWS toolkit for Visual Studio 建立安全群組**

1.  在 Visual Studio 的 **AWS Explorer** 中，展開 **Amazon EC2** 節點，然後按兩下 **Security Groups (安全群組)**。

1.  按一下 **Create Security Group (建立安全群組)**，然後輸入安全群組的名稱和描述。

1.  按一下 **OK (確定)**。

如需 Amazon EC2 安全群組的詳細資訊，請參閱*Amazon Elastic Compute Cloud 使用者指南*中的[使用安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)相關文章。

## Amazon EC2 金鑰對
<a name="create_deploy_NET.managing.ec2.keypair"></a>

透過 Amazon EC2 金鑰對，您可安全登入為 Elastic Beanstalk 應用程式佈建的 Amazon EC2 執行個體。

**重要**  
您必須建立 Amazon EC2 金鑰對並設定 Elastic Beanstalk 佈建的 Amazon EC2 執行個體，以使用 Amazon EC2 金鑰對，才能存取 Elastic Beanstalk 佈建的 Amazon EC2 執行個體。將應用程式部署到 Elastic Beanstalk 時，您可以使用 AWS Toolkit for Visual Studio 中的**發佈至 AWS**精靈建立金鑰對。若您想要使用 Toolkit 建立其他金鑰對，請依照下列步驟。或者，您可以使用 [AWS 管理主控台](https://console.aws.amazon.com/)，設定您的 Amazon EC2 金鑰對。如需建立 Amazon EC2 金鑰對的詳細資訊，請參閱 [Amazon Elastic Compute Cloud 入門指南](https://docs.aws.amazon.com/AWSEC2/latest/GettingStartedGuide/)。

 **Existing Key Pair (現有金鑰對)** 文字方塊可讓您指定欲使用的 Amazon EC2 金鑰對名稱，藉此安全登入執行 Elastic Beanstalk 應用程式的 Amazon EC2 執行個體。

**欲指定 Amazon EC2 金鑰對名稱**

1. 展開 **Amazon EC2** 節點，然後按兩下 **Key Pairs (金鑰對)**。

1.  按一下 **Create Key Pair (建立金鑰對)**，然後輸入金鑰對名稱。

1.  按一下 **OK (確定)**。

如需 Amazon EC2 金鑰對的詳細資訊，請前往《Amazon Elastic Compute Cloud 使用者指南》**中的[使用 Amazon EC2 登入資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-credentials.html)相關文章。如需連接至 Amazon EC2 執行個體的詳細資訊，請參閱[列出和連線到伺服器執行個體](create_deploy_NET.ec2connect.md)。

## 監控間隔
<a name="create_deploy_NET.managing.monitoring"></a>

 根據預設，只會啟用基本 Amazon CloudWatch 指標。其會每五分鐘傳回資料一次。您可以藉由為 AWS Toolkit for Eclipse中您環境之 **Configuration (組態)** 標籤的 **Server (伺服器)** 區段中 **Monitoring Interval (監控間隔)**，選取 **1 minute (1 分鐘)**，來啟用以每一分鐘為一個間隔之更精密的 CloudWatch 指標。

**注意**  
Amazon CloudWatch 服務費用可適用於一分鐘間隔指標。如需詳細資訊，請參閱 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)。

## 自訂 AMI ID
<a name="create_deploy_NET.managing.customami"></a>

 您可以藉由將您自訂 AMI 的識別符輸入 AWS Toolkit for Eclipse中您環境 **Configuration (組態)** 標籤之 **Server (伺服器)** 區段中的 **Custom AMI ID (自訂 AMI ID)** 方塊，來使用您的自訂 AMI 覆寫您 Amazon EC2 執行個體的預設 AMI。

**重要**  
使用您自己的 AMI 為進階任務，需要謹慎操作。若您需要自訂 AMI，建議您從預設的 Elastic Beanstalk AMI 開始並加以修改。為使運作狀態良好，Elastic Beanstalk 預期 Amazon EC2 執行個體應滿足一組要求，包含具有執行中的主機管理員。若未符合這些要求，您的環境可能無法正常運作。

# 使用適用於 Visual Studio AWS 的工具組設定 Elastic Load Balancing
<a name="create_deploy_NET.managing.elb"></a>

Elastic Load Balancing 是 Amazon Web 服務，可協助您提升應用程式的可用性和可擴展性。本服務可讓您輕鬆將應用程式負載分配至兩個或多個 Amazon EC2 執行個體。Elastic Load Balancing 可透過備援實現可用性，亦可支援應用程式的流量成長。

 Elastic Load Balancing 可讓您自動分配傳入應用程式的流量，在您執行的所有執行個體間取得平衡。當您需要增加應用程式的容量時，本服務亦讓您輕鬆新增新的執行個體。

 部署應用程式時，Elastic Beanstalk 會自動佈建 Elastic Load Balancing。您可以在 AWS Toolkit for Visual Studio 的應用程式環境索引標籤內，使用 **Load Balancer** 索引標籤編輯 Elastic Beanstalk 環境的 Amazon EC2 執行個體組態。

![\[Elastic Beanstalk Elastic Load Balancing 組態面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer.png)


 下列章節說明您可設定的 Elastic Load Balancing 參數供應用程式使用。

## 連接埠
<a name="create_deploy_NET.managing.elb.ports"></a>

為了為您的 Elastic Beanstalk 應用程式處理請求所佈建的負載平衡器，會將請求傳送至執行您應用程式的 Amazon EC2 執行個體。佈建的負載平衡器可以接聽 HTTP 和 HTTPS 連接埠上的請求，並將請求路由到 AWS Elastic Beanstalk 應用程式中的 Amazon EC2 執行個體。負載平衡器預設會處理 HTTP 連接埠上的請求。必須開啟至少一個 HTTP 或 HTTPS 連接埠。

![\[Elastic Beanstalk Elastic Load Balancing 組態 - 連接埠\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-ports.png)


**重要**  
請確認您指定的連接埠並未鎖定；否則，使用者將無法連接至您的 Elastic Beanstalk 應用程式。

### 控制 HTTP 連接埠
<a name="create_deploy_NET.managing.elb.ports.http"></a>

欲關閉 HTTP 連接埠，請於 **HTTP Listener Port (HTTP 接聽程式連接埠)** 選取 **OFF (關閉)**。欲開啟 HTTP 連接埠，請於清單選取 HTTP 連接埠 (如 **80 (80)**)。

**注意**  
若要使用預設連接埠 80 以外 (例如連接埠 8080) 的連接埠存取您的環境，請將接聽程式新增至現有的負載平衡器，然後設定該新的接聽程式在該連接埠上接聽。  
例如，使用[適用於 Classic Load Balancer 的AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-listeners.html)，輸入如下命令，將 *LOAD\$1BALANCER\$1NAME* 取代為您 Elastic Beanstalk 負載平衡器的名稱。  

```
aws elb create-load-balancer-listeners --load-balancer-name LOAD_BALANCER_NAME --listeners "Protocol=HTTP, LoadBalancerPort=8080, InstanceProtocol=HTTP, InstancePort=80"
```
例如，使用[適用於 Application Load Balancer 的AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-listener.html)，輸入如下命令，將 *LOAD\$1BALANCER\$1ARN* 取代為您 Elastic Beanstalk 負載平衡器的 ARN。  

```
aws elbv2 create-listener --load-balancer-arn LOAD_BALANCER_ARN --protocol HTTP --port 8080
```
若您想要 Elastic Beanstalk 監控您的環境，請勿移除連接埠 80 上的接聽程式。

### 控制 HTTPS 連接埠
<a name="create_deploy_NET.managing.elb.ports.https"></a>

Elastic Load Balancing 支援 HTTPS/TLS 通訊協定，可加密用戶端連線至負載平衡器的流量。負載平衡器至 EC2 執行個體的連線採用純文字加密。HTTPS 連接埠預設為關閉。

**欲開啟 HTTPS 連接埠**

1. 使用 AWS Certificate Manager (ACM) 建立新憑證，或將憑證和金鑰上傳至 AWS Identity and Access Management (IAM)。如需請求 ACM 憑證的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[請求憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。如需有關將第三方憑證匯入 ACM 的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。如果您的[區域無法使用](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM，請使用 AWS Identity and Access Management (IAM) 上傳第三方憑證。ACM 和 IAM 服務會存放憑證，並針對 SSL 憑證提供 Amazon Resource Name (ARN)。如需建立和上傳憑證至 IAM 的詳細資訊，請參閱*IAM 使用者指南*中的[使用伺服器憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

1. 選取 **HTTPS Listener Port (HTTPS 接聽程式連接埠)** 的連接埠來指定 HTTPS 連接埠。  
![\[Elastic Beanstalk Elastic Load Balancing 組態 - SSL\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-elb-ssl.png)

1. 針對 **SSL Certificate ID (SSL 憑證 ID)**，輸入您 SSL 憑證的 Amazon Resources Name (ARN)，例如 **arn:aws:iam::123456789012:server-certificate/abc/certs/build** 或 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**。使用您於步驟 1 建立或上傳的 SSL 憑證。

欲關閉 HTTPS 連接埠，請於 **HTTPS Listener Port (HTTPS 接聽程式連接埠)** 選取 **OFF (關閉)**。

## 運作狀態檢查
<a name="create_deploy_NET.managing.elb.healthchecks"></a>

運作狀態檢查的定義包括用於查詢執行個體運作狀態的 URL。根據預設，Elastic Beanstalk 針對非舊版容器和舊版容器分別使用 TCP:80 和 HTTP:80。您可於 **Application Health Check URL (應用程式運作狀態檢查 URL)** 方塊中輸入與應用程式現有資源相符的 URL (如 `/myapp/default.aspx`)，藉此覆寫預設 URL。若您覆寫預設 URL，Elastic Beanstalk 會使用 HTTP 來查詢資源。欲檢查您是否正使用舊版容器類型，請參閱 [為何部分平台版本標記為舊版？](using-features.migration.md#using-features.migration.why)

 您可於 **Load Balancing (負載平衡)** 面板使用 **EC2 Instance Health Check (EC2 執行個體運作狀態檢查)** 區段，藉此控制運作狀態檢查的設定。

![\[Elastic Beanstalk Elastic Load Balancing 組態 - 運作狀態檢查\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-healthcheck.png)


運作狀態檢查的定義包括用於查詢執行個體運作狀態的 URL。您可於 **Application Health Check URL (應用程式運作狀態檢查 URL)** 方塊中輸入與應用程式現有資源相符的 URL (如 `/myapp/index.jsp`)，藉此覆寫預設 URL。

下列清單說明您應用程式可設定的運作狀態檢查參數。
+ 在 **Health Check Interval (seconds) (運作狀態檢查間隔，秒)** 部分，輸入 Elastic Load Balancing 對應用程式的 Amazon EC2 執行個體進行運作狀態檢查之間的等待秒數。
+  在 **Health Check Timeout (seconds) (運作狀態檢查逾時，秒)** 部分，指定 Elastic Load Balancing 將執行個體視為沒有回應前的等待回應的秒數。
+ 在 **Healthy Check Count Threshold (運作狀態檢查計數閾值)** 和 **Unhealthy Check Count Threshold (不健全檢查結果計數臨界值)** 部分，指定 Elastic Load Balancing 變更執行個體運作狀態前的連續成功或不成功 URL 探測的次數。例如，若 **Unhealthy Check Count Threshold (不健全檢查結果計數臨界值**) 部分指定為 **5**，表示 URL 連續五次回傳錯誤訊息或逾時後，Elastic Load Balancing 會將運作狀態檢查視為失敗。

## 工作階段
<a name="create_deploy_NET.managing.elb.sessions"></a>

負載平衡器預設會以最小的負載，將每個請求獨立路由至伺服器執行個體。相對而言，黏性工作階段會將使用者工作階段繫結到特定的伺服器執行個體，以便工作階段期間來自使用者的所有請求都發送到相同的伺服器執行個體。

 應用程式若啟用黏性工作階段，Elastic Beanstalk 會使用負載平衡器產生的 HTTP Cookie。負載平衡器會使用特殊負載平衡器產生的 Cookie，來追蹤每個請求的應用程式執行個體。當負載平衡器收到請求時，首先會檢查此 Cookie 是否存在於請求中。若是，此請求會傳送至 Cookie 中指定的應用程式執行個體。若 Cookie 不存在，則負載平衡器會根據現有負載平衡演算法選擇應用程式執行個體。回應會插入 Cookie，藉此將後續來自相同使用者的請求繫結至該應用程式執行個體。政策組態會定義 Cookie 到期日期，此為每個 Cookie 的有效使用期限。

您可使用 **Load Balancer (負載平衡器)** 索引標籤上的 **Sessions (工作階段)** 區段，以指定應用程式的負載平衡器是否允許讓工作階段黏著。

![\[Elastic Beanstalk Elastic Load Balancing 組態 - 工作階段\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-sessions.png)


 如需 Elastic Load Balancing 的詳細資訊，請前往 [Elastic Load Balancing 開發人員指南](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/)。

# 使用適用於 Visual Studio AWS 的工具組設定 Auto Scaling
<a name="create_deploy_NET.managing.as"></a>

Amazon EC2 Auto Scaling 為 Amazon Web Service，旨在根據使用者定義的觸發來自動啟動或終止 Amazon EC2 執行個體。使用者可設定 *Auto Scaling 群組*並將「觸發」**與這些群組建立關聯，藉此根據諸如頻寬使用量或 CPU 使用率等指標，自動擴展運算資源。Amazon EC2 Auto Scaling 可與 Amazon CloudWatch 搭配使用，以擷取執行應用程式之伺服器執行個體的指標。

Amazon EC2 Auto Scaling 可讓您取得一組 Amazon EC2 執行個體，並設定各種參數，讓此群組自動增減數量。Amazon EC2 Auto Scaling 可於該群組新增或移除 Amazon EC2 執行個體，協助您無縫處理應用程式的流量變更。

 Amazon EC2 Auto Scaling 亦會針對其啟動的每個 Amazon EC2 執行個體，監控其運作狀態。如果有任何執行個體未預期終止，Amazon EC2 Auto Scaling 會偵測到終止狀況，並啟動替代執行個體。此功能可讓您自動維持所需的固定 Amazon EC2 執行個體數量。

Elastic Beanstalk 會為您的應用程式佈建 Amazon EC2 Auto Scaling。您可以使用 Toolkit AWS for Visual Studio 中應用程式環境標籤內的 **Auto Scaling** 索引標籤來編輯 Elastic Beanstalk 環境的 Amazon EC2 執行個體組態。

![\[Elastic Beanstalk Auto Scaling 組態面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling.png)


下列章節討論如何設定 Auto Scaling 參數供您的應用程式使用。

## 啟動組態
<a name="create_deploy_NET.managing.as.launchconfig"></a>

您可編輯啟動組態，以控制 Elastic Beanstalk 應用程式佈建 Amazon EC2 Auto Scaling 資源的方式。

**Minimum Instance Count (執行個體計數下限)** 與 **Maximum Instance Count (執行個體計數上限)** 方塊，可讓您指定您 Elastic Beanstalk 應用程式使用的 Auto Scaling 群組大小上下限。

![\[Elastic Beanstalk Auto Scaling 啟動組態設定視窗\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling-launchconfig.png)


**注意**  
欲保持固定數量的 Amazon EC2 執行個體，請將 **Minimum Instance Count (執行個體計數下限)** 和 **Maximum Instance Count (執行個體計數上限)** 設為相同值。

**Availability Zones (可用區域)** 方塊可讓您指定 Amazon EC2 執行個體所在可用區域數量。若您想要建構容錯應用程式，請務必設定此數值。若一個可用區域發生故障，您其他可用區域內的執行個體仍將繼續執行。

**注意**  
目前，您無法指定執行個體所在的可用區域。

## 觸發
<a name="create_deploy_NET.managing.as.trigger"></a>

「觸發」**是您可加以設定的 Amazon EC2 Auto Scaling 機制，以通知系統您想要增加 (「擴展」**) 或減少 (「縮減」**) 執行個體數量的時機。您可設定觸發，在指標 (如 CPU 使用率) 發佈至 Amazon CloudWatch 時「觸發」**，並判斷是否滿足您指定的條件。在特定期間內，若達到您為指標指定的條件閾值上下限，則觸發會啟動名為「擴展活動」**的長時間執行程序。

您可以使用 AWS Toolkit for Visual Studio 為 Elastic Beanstalk 應用程式定義擴展觸發條件。

![\[Elastic Beanstalk Auto Scaling 觸發\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling-triggers.png)


Amazon EC2 Auto Scaling 會觀看執行個體的特定 Amazon CloudWatch 指標，藉此進行觸發作業。觸發條件包括 CPU 使用率、網路流量及磁碟活動。使用 **Trigger Measurement (觸發條件測量指標)** 設定以選取觸發的指標。

下列清單說明您可以使用 AWS 管理主控台設定的觸發參數。
+ 您可指定觸發應使用的統計資料。針對 **Trigger Statistic (觸發條件統計資料)**，您可選擇 **Minimum (下限)**、**Maximum (上限)**、**Sum (總和)** 或 **Average (平均)**。
+ 在 **Unit of Measurement (測量單位)** 部分指定觸發條件測量的單位。
+ **Measurement Period (測量期間)** 方塊的數值可指定 Amazon CloudWatch 測量觸發指標的頻率。在 **Breach Duration (違規持續時間)** 部分，您可定義指標在超過所定義的限制 (即 **Upper Threshold (閾值上限)** 和 **Lower Threshold (閾值下限)** 所指定) 後，引發觸發前的時間。
+ 在 **Upper Breach Scale Increment (上限違規規模調整增幅)** 和 **Lower Breach Scale Increment (下限違規規模調整增幅)** 部分，可指定在進行擴展活動時，欲新增或移除的 Amazon EC2 執行個體數量。

如需 Amazon EC2 Auto Scaling 的詳細資訊，請參閱 [Amazon Elastic Compute Cloud 文件](https://aws.amazon.com/documentation/ec2/)中的「Amazon EC2 Auto Scaling」**一節。

# 使用 AWS 適用於 Visual Studio 的工具組設定通知
<a name="create_deploy_NET.container.sns"></a>

Elastic Beanstalk 使用 Amazon Simple Notification Service (Amazon SNS) 來通知您影響應用程式的重要事件。欲啟用 Amazon SNS 通知，只要在 **Email Address (電子郵件地址)** 方塊中輸入您的電子郵件地址即可。欲停用此通知，請將您的電子郵件地址自方塊移除。

![\[Elastic Beanstalk 通知視窗\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-notifications.png)


# 使用適用於 Visual Studio AWS 的工具組設定 .NET 容器
<a name="create_deploy_NET.container"></a>

 **Container/.NET Options (Container/.NET 選項)** 面板可讓您微調 Amazon EC2 執行個體的行為，也可啟用或停用 Amazon S3 日誌輪換。您可以使用 AWS Toolkit for Visual Studio 來設定容器資訊。

**注意**  
您可交換環境 CNAME，藉此零停機修改您的組態設定。如需更多詳細資訊，請參閱 [透過 Elastic Beanstalk 進行藍/綠部署](using-features.CNAMESwap.md)。

若有需要，則可增加參數的數量。如需有關增加參數的詳細資訊，請參閱 [選項設定](ebextensions-optionsettings.md)。

**存取 Elastic Beanstalk 應用程式的 Container/.NET 選項面板**

1. 在 AWS Toolkit for Visual Studio 中，展開 Elastic Beanstalk 節點和您的應用程式節點。

1. 在 **AWS Explorer** 中，按兩下 Elastic Beanstalk 環境。

1. 在 **Overview (概觀)** 窗格底部，按一下 **Configuration (組態)** 索引標籤。

1. 在 **Container (容器)** 底下，您可設定容器選項。  
![\[Elastic Beanstalk 容器面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-container.png)

## .NET 容器選項
<a name="create_deploy_NET.container.vs.options"></a>

您可選擇應用程式適用的 .NET Framework 版本。**Target runtime (目標執行時間)** 部分請選擇 2.0 或 4.0。若您欲啟用 32 位元應用程式，請選取 **Enable 32-bit Applications (啟用 32 位元應用程式)**。

## 應用程式設定
<a name="create_deploy_NET.container.vs.options.envprop"></a>

**Application Settings (應用程式設定)** 區段讓您指定可從應用程式程式碼讀取的環境變數。

![\[Elastic Beanstalk 容器面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-container-envproperties.png)


# 管理帳戶
<a name="create_deploy_NET.accounts"></a>

## 
<a name="create_deploy_NET.accounts.details"></a>

如果您想要設定不同的 AWS 帳戶來執行不同的任務，例如測試、預備和生產，您可以使用 AWS Toolkit for Visual Studio 新增、編輯和刪除帳戶。

**欲管理多個帳戶**

1.  在 Visual Studio 的 **View (檢視)** 選單中，按一下 **AWS Explorer**。

1.  在 **Account (帳戶)** 清單旁，按一下 **Add Account (新增帳戶)** 按鈕。  
![\[AWS Explorer 標籤\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-aws-explorer-tab.png)

    會出現 **Add Account (新增帳戶)** 對話方塊。  
![\[新增帳戶對話方塊\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-add-account.png)

1. 填寫請求的資訊。

1.  現在，您的帳戶資訊會顯示於 **AWS Explorer** 標籤。在發佈至 Elastic Beanstalk 時，您可以選取欲使用的帳戶。

# 列出和連線到伺服器執行個體
<a name="create_deploy_NET.ec2connect"></a>

您可以透過 AWS Toolkit for Visual Studio 或從 AWS 管理主控台檢視執行 Elastic Beanstalk 應用程式環境的 Amazon EC2 執行個體清單。您可以使用遠端桌面連線功能，來連線到這些執行個體。如需使用 AWS 管理主控台列出和連線至伺服器執行個體的資訊，請參閱 [列出和連線到伺服器執行個體](using-features.ec2connect.md)。下節會逐步引導您使用 AWS Toolkit for Visual Studio 檢視並連線至伺服器執行個體。

**欲檢視並連接至環境的 Amazon EC2 執行個體**

1.  在 Visual Studio 的 **AWS Explorer** 中，展開 **Amazon EC2** 節點，然後按兩下 **Instances (執行個體)**。

1.  在 **Instance (執行個體)** 欄中，針對您應用程式的負載平衡器中執行的 Amazon EC2 執行個體，在其執行個體 ID 上按一下滑鼠右鍵，然後從右鍵選單中選擇 **Open Remote Desktop (開啟遠端桌面)**。  
![\[開啟遠端桌面對話方塊\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-rdp-login.png)

1.  選擇 **Use EC2 keypair to log on (使用 EC2 金鑰對來登入)**，然後在 **Private key (私密金鑰)** 方塊中，貼入您用來部署應用程式的私密金鑰檔案的內容。或者，請在 **User name (使用者名稱)** 與 **Password (密碼)** 文字方塊中，輸入您的使用者名稱和密碼。
**注意**  
如果金鑰對儲存於 Toolkit 中，則不會顯示文字方塊。

1. 按一下 **OK (確定)**。

# 監控應用程式運作狀態
<a name="create_deploy_NET.healthstatus"></a>

當您執行的是生產網站，了解您應用程式的可用性和回應請求的情況至關重要。為了協助監控您應用程式的回應能力，Elastic Beanstalk 提供的功能可監控應用程式的統計資訊，並建立超過閾值的觸發警示。

如需 Elastic Beanstalk 提供的運作狀態監控詳細資訊，請參閱[基礎型運作狀態報告](using-features.healthstatus.md)。

您可以使用 Toolkit for Visual Studio 或 AWS 管理主控台來 AWS 存取應用程式的操作資訊。

工具組會於 **Status (狀態)** 欄位顯示您環境的狀態和應用程式運作狀態。

![\[Elastic Beanstalk 運作狀態\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-env-status.png)


**欲監控應用程式運作狀態**

1. 在 AWS Toolkit for Visual Studio 的 **AWS Explorer** 中，展開 Elastic Beanstalk 節點，然後展開您的應用程式節點。

1. 以滑鼠右鍵按一下您的 Elastic Beanstalk 環境，然後按一下 **View Status (檢視狀態)**。

1. 在您的應用程式環境分頁中，按一下 **Monitoring (監控)**。

   **Monitoring (監控)** 面板包含一組圖表顯示您特定應用程式環境的資源使用情況。  
![\[Elastic Beanstalk 監控面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-monitoring.png)
**注意**  
時間範圍預設為最後一個小時。欲修改此設定，在 **Time Range (時間範圍)** 清單按一下不同的時間範圍。

您可以使用 AWS Toolkit for Visual Studio 或 AWS 管理主控台來檢視與您的應用程式相關聯的事件。

**檢視應用程式事件**

1. 在 AWS Toolkit for Visual Studio 的 **AWS Explorer** 中，展開 Elastic Beanstalk 節點和您的應用程式節點。

1. 在 **AWS Explorer** 中以滑鼠右鍵按一下您的 Elastic Beanstalk 環境，然後按一下 **View Status (檢視狀態)**。

1. 在您的應用程式環境分頁中，按一下 **Events (事件)**。  
![\[Elastic Beanstalk 事件面板\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-events.png)

# 使用部署工具在 .NET 中 AWS 部署 Elastic Beanstalk 應用程式
<a name="deploy_NET_standalone_tool"></a>

AWS 提供兩種命令列工具，可將 .NET Core 和 ASP.NET Core 應用程式部署至 Elastic Beanstalk：
+ **AWS .NET 部署工具** – 一種現代命令列工具，可簡化將 .NET 應用程式部署至 AWS 服務，包括 Elastic Beanstalk。此工具提供互動式體驗，可自動偵測適合您應用程式的最佳 AWS 服務。如需詳細資訊，請參閱 [AWS .NET 部署工具](https://github.com/aws/aws-dotnet-deploy?tab=readme-ov-file#aws-net-deployment-tool)。
+ **AWS .NET CLI 的延伸**模組 – 一組 .NET CLI 延伸模組，提供將 .NET Core 應用程式部署至 Elastic Beanstalk 和其他 AWS 服務的命令。這些擴充功能會與標準 .NET CLI 工作流程整合。如需詳細資訊，請參閱 [AWS .NET CLI 的延伸](https://github.com/aws/aws-extensions-for-dotnet-cli?tab=readme-ov-file#aws-elastic-beanstalk-amazonelasticbeanstalktools)模組。

# 將您的內部部署 .NET 應用程式遷移至 Elastic Beanstalk
<a name="dotnet-onpremmigration"></a>

AWS Elastic Beanstalk 透過 Elastic Beanstalk 命令列界面 (EB CLI)，為在網際網路資訊服務 (IIS) 上執行的 Windows 應用程式提供簡化的遷移路徑。**eb migrate** 命令會自動探索您的 IIS 網站、應用程式和虛擬目錄、保留其組態，並將它們部署到 AWS 雲端。

此內建遷移功能提供更簡單的方法，可降低通常與雲端遷移相關聯的複雜性和時間。遷移程序有助於在轉換至 期間維護應用程式功能和組態完整性 AWS。

如需將 IIS 應用程式遷移至 的完整詳細說明 AWS Elastic Beanstalk，請參閱本指南中的 [將 IIS 應用程式遷移至 Elastic Beanstalk](dotnet-migrating-applications.md)章節。

# Elastic Beanstalk 上 Windows Server 淘汰元件的建議
<a name="dotnet-deprecation-recommendations"></a>

如果您的應用程式目前正在淘汰的 Windows Server 2012 R2 平台分支上執行，本主題會提供建議。它還解決了對 AWS 我們的服務 API 端點和受影響的平台分支上的 TLS 1.0 和 1.1 通訊協定版本的已棄用支援。

## Windows Server 2012 R2 平台分行已被淘汰
<a name="dotnet-retired-branches"></a>

Elastic Beanstalk 已於 202[3 年 12](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html) 月 4 日淘汰 Windows Server 2012 R2 平台分支，並在 2024 年 4 月 10 日將這些平台相關聯的 AMIs 設為私有。此動作可防止在使用預設 Beanstalk AMI 的 Windows Server 2012 環境中啟動執行個體。

如果您有任何環境在淘汰的 Windows 平台分支上執行，我們建議您將它們遷移到下列其中一個 Windows Server 平台，這些平台是目前且完全支援的：
+ Windows Server 2022 搭配 IIS 10.0 2.x 版
+ Windows Server 2019 搭配 IIS 10.0 版本 2.x

如需完整的遷移考量事項，請參閱[從先前的 Windows Server 平台主要版本遷移](dotnet-v2migration.md#dotnet-v2migration.migration)。

如需有關平台版本棄用的詳細資訊，請參閱[Elastic Beanstalk 平台支援政策](platforms-support-policy.md)。

**注意**  
如果您無法遷移到這些完全支援的平台，我們建議您使用以 Windows Server 2012 R2 AMIs 或 Windows Server 2012 R2 Core AMI 建立AMIs 作為基礎映像，如果您尚未這麼做。如需詳細說明，請參閱 [保留已淘汰平台的 Amazon Machine Image (AMI) 存取權](using-features.customenv-env-copy.md)。如果您在執行其中一個遷移步驟時需要暫時存取 AMI，請聯絡 [AWS 支援中心](https://console.aws.amazon.com/support/home#/)。

## TLS 1.2 相容性
<a name="tls-1-2-enforcement."></a>

截至 2023 年 12 月 31 日， AWS 開始對所有 AWS API 端點完全強制執行 TLS 1.2。此動作已移除搭配 AWS APIs.1 版的能力。此資訊最初於 [2022 年 6 月 28](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/) 日傳達。為了避免可用性影響的風險，如果您尚未這麼做，請盡快將執行此處識別之平台版本的任何環境升級至較新的版本。

**潛在影響**  
執行 TLS v1.1 或更早版本的 Elastic Beanstalk 平台版本會受到影響。此變更會影響環境動作，包括但不限於下列項目：組態部署、應用程式部署、自動擴展、新環境啟動、日誌輪換、增強型運作狀態報告，以及將應用程式日誌發佈至與您應用程式相關聯的 Amazon S3 儲存貯體。

**受影響的 Windows 平台版本**  
建議在下列平台版本上具有 Elastic Beanstalk 環境的客戶將其每個對應環境升級至 [2022 年 2 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-02-18-windows.html)發行的 Windows 平台版本 2.8.3 或更新版本。
+ Windows Server 2019 – 平台版本 2.8.2 或先前的版本

建議在下列平台版本上具有 Elastic Beanstalk 環境的客戶將其每個對應環境升級至 [2022 年 12 月 28 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-12-28-windows.html)發行的 Windows 平台 2.10.7 版或更新版本。
+ Windows Server 2016 – 平台版本 2.10.6 或先前的版本
+ Windows Server 2012 — 所有平台版本；此平台已於 [2023 年 12 月 4](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html) 日淘汰 
+ Windows Server 2008 — 所有平台版本；此平台於 [2019 年 10 月 28 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2019-10-28-windows.html)被淘汰 

如需最新和支援的 Windows Server 平台版本的清單，請參閱《*AWS Elastic Beanstalk 平台*指南》中的[支援的平台](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)。

如需更新環境的詳細資訊和最佳實務，請參閱 [更新您 Elastic Beanstalk 環境的平台版本](using-features.platform.upgrade.md)。