

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

# 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)。