

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

# 將 ASP.NET Core 2.0 應用程式部署至 Amazon ECS (EC2)
<a name="deployment-ecs-aspnetcore-ec2"></a>

本節說明如何使用 Toolkit for Visual Studio 提供的**發佈容器精靈 AWS**，使用 EC2 啟動類型透過 Amazon ECS 部署以 Linux 為目標的容器化 ASP.NET Core 2.0 應用程式。 EC2 由於 Web 應用程式表示會持續執行，因此會部署為服務。

## 在您發佈容器之前
<a name="tkv-deploy-ecs-netcore-prerequisites"></a>

使用**發佈容器至 AWS** 部署 ASP.NET Core 2.0 應用程式之前：
+  [指定您的 AWS 登入](deployment-ecs-specify-credentials.md)資料，並使用 [Amazon ECS 進行設定](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html)。
+  [安裝 Docker](https://docs.docker.com/engine/installation)。您有一些不同的安裝選項，包括 [Docker for Windows](https://docs.docker.com/docker-for-windows/install/)。
+  根據 Web 應用程式的需求[建立 Amazon ECS 叢集](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-cluster.html)。這只需要幾個步驟。
+ 在 Visual Studio 中，為以 Linux 為目標的 ASP.NET Core 2.0 容器化應用程式建立 （或開啟） 專案。

## 存取要 AWS 精靈的發佈容器
<a name="tkv-deployment-ecs-netcore-accessing"></a>

若要部署以 Linux 為目標的 ASP.NET Core 2.0 容器化應用程式，請在 Solution Explorer 中的專案上按一下滑鼠右鍵，然後選取將**容器發佈至 AWS**。

您也可以在 Visual Studio Build 功能表中選取將**容器發佈至 AWS** 。

## 將容器發佈至 AWS 精靈
<a name="tkv-deploy-ecs-pubtoaws"></a>

 **要使用的帳戶設定檔** - 選取要使用的帳戶設定檔。

 **區域** - 選擇部署區域。設定檔和區域用於設定部署環境資源，並選取預設 Docker 登錄檔。

 **組態** - 選取 Docker 映像建置組態。

 **Docker 儲存庫** - 選擇現有的 Docker 儲存庫，或輸入新儲存庫的名稱，然後建立該儲存庫。這是推送建置容器映像的儲存庫。

 **標籤** - 選取現有標籤或輸入新標籤的名稱。標籤可以追蹤 Docker 容器的版本、選項或其他唯一組態元素等重要詳細資訊。

 **部署** - 選取 **ECS 叢集上的服務**。當您的應用程式需要長時間執行時 （例如 ASP.NET Core 2.0 Web 應用程式），請使用此部署選項。

 **將設定儲存至 `aws-docker-tools-defaults.json`並設定專案以進行命令列部署** - 如果您想要從命令列部署的彈性，請勾選此選項。`dotnet ecs deploy` 從您的專案目錄使用 來部署 和 `dotnet ecs publish` 容器。

## 啟動組態頁面
<a name="tkv-deploy-ecs-launch-config"></a>

 **ECS 叢集** - 選擇將執行 Docker 映像的叢集。您可以使用 AWS 管理主控台[建立 ECS 叢集](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)。

 **啟動類型** - 選擇 EC2。若要使用 Fargate 啟動類型，請參閱[將 ASP.NET Core 2.0 應用程式部署到 Amazon ECS (Fargate)](deployment-ecs-aspnetcore-fargate.md)。

## 服務組態頁面
<a name="tkv-deploy-ecs-service"></a>

 **服務** - 在下拉式清單中選取其中一個服務，將您的容器部署到現有的服務。或者，選擇**建立新**服務以建立新的服務。叢集中不得有相同的服務名稱，但一個區域內或多個區域間的多個叢集中可以有類似的服務名稱。

 **任務數量** - 在叢集上部署和持續執行的任務數量。每個任務都是您容器的一個執行個體。

 **最小良好百分比** - 部署期間必須保持 `RUNNING` 狀態的任務百分比，四捨五入至最接近的整數。

 **百分比上限** - 部署期間允許處於 `RUNNING`或 `PENDING` 狀態的任務百分比，四捨五入至最接近的整數。

 **置放範本** - 選取任務置放範本。

當您在叢集中啟動任務時，Amazon ECS 必須根據任務定義中指定的需求，例如 CPU 和記憶體，來決定將任務放置在何處。同樣地，當您縮減任務計數時，Amazon ECS 必須判斷要終止的任務。

置放範本會控制任務在叢集中啟動的方式：
+ AZ Balanced Spread (AZ 平衡分配) - 跨可用區域及跨可用區域中的容器執行個體分散任務。
+ AZ Balanced BinPack (AZ 平衡 BinPack) - 使用最低可用記憶體，跨可用區域及跨可用區域中的容器執行個體分散任務。
+ BinPack - 根據最低可用的 CPU 或記憶體數分散任務。
+ One Task Per Host (每一主機一個任務) - 在每個容器執行個體上最多放置一個來自服務的任務。

如需詳細資訊，請參閱 [Amazon ECS 任務置放](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement.html)。

## Application Load Balancer 頁面
<a name="tkv-deploy-ecs-app-load-balancer"></a>

 **設定 Application Load Balancer** - 檢查以設定應用程式負載平衡器。

 **選取服務的 IAM 角色** - 選取現有角色，或選擇**建立新**角色，然後建立新角色。

 **Load Balancer** - 選取現有的負載平衡器，或選擇**建立新**負載平衡器，然後輸入新負載平衡器的名稱。

 **接聽程式連接埠** - 選取現有的接聽程式連接埠，或選擇**建立新**並輸入連接埠號碼。預設連接埠 `80`適用於大多數 Web 應用程式。

 **目標群組** - 根據預設，負載平衡器會使用您為目標群組指定的連接埠和通訊協定，將請求傳送至已註冊的目標。在透過目標群組來註冊每個目標時，您可以覆寫此埠號。

 **路徑模式** - 負載平衡器將使用路徑型路由。接受預設值`/`或提供不同的模式。路徑模式區分大小寫，長度最多可達 128 個字元，並包含[一組選取的字元](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#path-conditions)。

 **運作狀態檢查路徑** - 運作狀態檢查目標上的目的地 ping 路徑。根據預設，它`/`適用於 Web 應用程式。視需要輸入不同的路徑。如果您輸入的路徑無效，運作狀態檢查將會失敗，而且會被視為運作狀態不佳。

如果您部署多個服務，而且每個服務都會部署到不同的路徑或位置，您可能需要自訂檢查路徑。

## ECS 任務定義頁面
<a name="tkv-deploy-ecs-task-definition"></a>

 **任務定義** - 選取現有的任務定義，或選擇**建立新**並輸入新的任務定義名稱。

 **容器** - 選取現有的容器，或選擇**建立新**容器，然後輸入新的容器名稱。

 **記憶體 (MiB)** - 提供**軟性限制**或**硬性限制**或兩者的值。

要預留給容器的記憶體*軟性限制* （以 MiB 為單位）。Docker 會嘗試將容器記憶體保持在軟性限制之下。容器可能會耗用更多記憶體，最高可達以記憶體參數 （如果適用） 指定的硬性限制，或容器執行個體上所有可用的記憶體，以先到者為準。

要呈現給容器的記憶體*硬性限制* （以 MiB 為單位）。如果您的容器嘗試使用超過此處指定的記憶體，容器便會終止。

 **任務角色** - 選取 IAM 角色的任務角色，允許容器代表您呼叫其相關聯政策中指定的 AWS APIs。這是將登入資料傳入應用程式的方式。[了解如何為您的應用程式指定 AWS 安全登入](deployment-ecs-specify-credentials.md)資料。

 **連接埠映射** - 新增、修改或刪除容器的連接埠映射。如果負載平衡器已開啟，主機連接埠預設為 0，而連接埠指派將為動態。

 **環境變數** - 新增、修改或刪除容器的環境變數。

當您對組態感到滿意時，請按一下**發佈**以開始部署程序。

## 將容器發佈至 AWS
<a name="tkv-deploy-ecs-publishing"></a>

事件會在部署期間顯示。成功完成時精靈會自動關閉。您可以取消核取方塊頁面底部的方塊來覆寫它。

您可以在 AWS Explorer 中找到新執行個體的 URL。展開 Amazon ECS 和叢集，然後按一下叢集。