

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 ASP.NET Core 2.0 应用程序部署到 Amazon ECS（EC2）
<a name="deployment-ecs-aspnetcore-ec2"></a>

本部分介绍如何借助**将容器发布到 AWS** 向导（作为 Toolkit for Visual Studio 的一部分提供）来使用 EC2 启动类型通过 Amazon ECS 部署针对 Linux 的容器化 ASP.NET Core 2.0 应用程序。由于 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 容器化应用程序，请右键单击解决方案浏览器中的项目并选择**将容器发布到 AWS**。

您还可以在 Visual Studio 的“构建”菜单中选择**将容器发布到 AWS**。

## 将容器发布到 AWS 向导
<a name="tkv-deploy-ecs-pubtoaws"></a>

 **Account profile to use (要使用的账户配置文件)** - 选择要使用的账户配置文件。

 **Region (区域)** - 选择一个部署区域。配置文件和区域用于设置您的部署环境资源并选择默认的 Docker 注册表。

 **Configuration (配置)** - 选择 Docker 映像构建配置。

 **Docker Repository (Docker 存储库)** - 选择现有 Docker 存储库，或键入新存储库的名称即可创建新存储库。这是构建的容器映像要推送到的存储库。

 **Tag (标签)** - 选择现有标签或键入新标签的名称。标签可以跟踪重要详细信息，如 Docker 容器的版本、选项或其他唯一配置元素。

 **Deployment (部署)** – 选择 **Service on an ECS Cluster (ECS 集群上的服务)**。当您的应用程序（如 ASP.NET 内核 2.0 Web 应用程序）计划长时间运行时，请使用此部署选项。

 **将设置保存到 `aws-docker-tools-defaults.json` 并为命令行部署配置项目** - 如果您需要从命令行灵活部署，请选中此选项。使用您的项目目录中的 `dotnet ecs deploy` 以部署和 `dotnet ecs publish` 容器。

## “Launch Configuration (启动配置)”页面
<a name="tkv-deploy-ecs-launch-config"></a>

 **ECS Cluster (ECS 集群)** – 选择将运行 Docker 映像的集群。您可以使用 AWS 管理控制[台创建 ECS 集群](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)。

 **Launch Type (启动类型)** - 选择 EC2。要使用 Fargate 启动类型，请参阅[将 ASP.NET 内核 2.0 应用程序部署到 Amazon ECS (Fargate)](deployment-ecs-aspnetcore-fargate.md)。

## “Service Configuration (服务配置)”页面
<a name="tkv-deploy-ecs-service"></a>

 **Service (服务)** - 从下拉框中选择一项服务，将您的容器部署到该现有服务。或者选择 **Create New (新建)** 新建一项服务。一个集群中的服务名称必须唯一，但是您可以为一个区域或多个区域中多个集群中的服务提供相似的名称。

 **Number of Tasks (任务数)** - 要在您的集群中部署并保持运行的任务数量。每个任务都是您的容器的一个实例。

 **Minimum Healthy Percent (最小正常运行状况百分比)** - 在部署期间必须处于 `RUNNING` 状态的任务百分比（四舍五入到最近的整数）。

 **Maximum Percent (最大百分比)** - 在部署期间允许处于 `RUNNING` 或 `PENDING` 状态的任务百分比（向下舍入到最近的整数）。

 **Placement Templates (放置模板)** – 选择任务放置模板。

如果您在集群中启动任务，Amazon ECS 必须根据任务定义中指定的要求（例如 CPU 和内存）确定将任务放置在何处。同样，如果您缩减任务计数，Amazon ECS 必须确定终止哪些任务。

放置模板用于控制任务如何在集群中启动：
+ AZ Balanced Spread (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>

 **Configure Application Load Balancer (配置应用程序负载均衡器)** - 选中此项可配置应用程序负载均衡器。

 **Select IAM role for service (为服务选择 IAM 角色)** – 选择一个现有角色，或者选择 **Create New (新建)** 即可创建一个新角色。

 **Load Balancer (负载均衡器)** - 选择一个现有负载均衡器，或者选择 **Create New (新建)** 并键入新负载均衡器的名称。

 **Listener Port (侦听器端口)** - 选择一个现有侦听器端口，或者选择 **Create New (新建)** 并键入一个端口号。默认端口 `80` 适用于大多数 Web 应用程序。

 **Target Group (目标组)** - 默认情况下，负载均衡器使用您为目标组指定的端口和协议将请求发送到已注册目标。在将每个目标注册到目标组时，可以覆盖此端口。

 **Path Pattern (路径模式)** - 负载均衡器将使用基于路径的路由。接受默认 `/` 或提供一个不同模式。路径模式区分大小写，长度最多为 128 个字符，并且可包含[一组选定字符](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#path-conditions)。

 **Health Check Path (运行状况检查路径)** - 进行运行状况检查的目标上的目的地的 Ping 路径。默认为 `/`，该设置适用于 Web 应用程序。输入不同的路径（如果需要）。如果您输入的路径无效，则运行状况检查将失败，并将视为运行状况不佳。

如果您要部署多个服务，且每个服务都将部署到不同的路径或位置，您可能需要自定义检查路径。

## “ECS Task Definition (ECS 任务定义)”页面
<a name="tkv-deploy-ecs-task-definition"></a>

 **Task Definition (任务定义)** - 选择一个现有任务定义，或者选择 **Create New (新建)** 并键入新任务定义的名称。

 **Container (容器)** - 选择一个现有容器，或者选择 **Create New (新建)** 并键入新容器的名称。

 **Memory (MiB) (内存(MiB))** - 提供**软限制**和/或**硬限制**的值。

要为容器预留的内存量的*软限制*（以 MiB 为单位）。Docker 尝试将容器内存控制在软限制以下。如果容器需要消耗更多内存，则上限为内存参数指定的硬限制（如果适用）或者容器实例中的全部可用内存，以较低者为准。

要提供给容器的内存的*硬限制*（以 MiB 为单位）。如果容器尝试使用超出此处指定的内存，该容器将被终止。

 **任务角色**-为 IAM 角色选择一个任务角色，该角色允许容器代表您调用其关联策略中指定的权限。 AWS APIs 凭证就是通过这种方法传递给您的应用程序的。了解[如何为您的应用程序指定 AWS 安全证书](deployment-ecs-specify-credentials.md)。

 **Port Mapping (端口映射)** – 添加、修改或删除容器的端口映射。如果负载均衡器为开启状态，主机端口将默认设置为 0，端口分配采用动态方式。

 **Environment Variables (环境变量)** - 添加、修改或删除容器的环境变量。

如果您对配置满意，请单击 **Publish (发布)** 开始部署流程。

## 将容器发布到 AWS
<a name="tkv-deploy-ecs-publishing"></a>

在部署过程中会显示事件。成功完成后向导会自动关闭。您可以通过取消选中页面底部的复选框来覆盖该功能。

您可以在 AWS 资源管理器中找到新实例的 URL。展开 Amazon ECS 和集群，然后单击您的集群。