

# 了解如何创建 EC2 的 Amazon ECS Windows 任务
<a name="getting-started-ecs-ec2-v2"></a>

通过在控制台中注册任务定义、创建集群和创建服务，开始使用利用 EC2 的 Amazon ECS。

完成以下步骤，开始使用 EC2 启动类型的 Amazon ECS。

## 先决条件
<a name="getting-started-ec2-prereqs"></a>

在开始之前，请完成[设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中的步骤，并且您的 IAM 用户具有 `AdministratorAccess` IAM 策略示例中指定的权限。

控制台会尝试自动创建任务执行 IAM 角色，这是 Fargate 任务需要的。要确保控制台能够创建该 IAM 角色，必须满足以下条件之一：
+ 您的用户拥有管理员权限。有关更多信息，请参阅 [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md)。
+ 您的用户拥有创建服务角色的 IAM 权限。有关更多信息，请参阅[创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。
+ 拥有管理员权限的用户手动创建了任务执行角色，使之对要所用的账户可用。有关更多信息，请参阅 [Amazon ECS 任务执行 IAM 角色](task_execution_IAM_role.md)。

**重要**  
使用任务定义创建服务时所选择的安全组，必须为入站流量开放端口 80。将以下入站规则添加到安全组。有关如何创建安全组的信息，请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》**中的[为 Amazon EC2 实例创建安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-security-group.html)。  
类型：HTTP
协议：TCP
端口范围：80
来源：Anywhere（任何位置）（`0.0.0.0/0`）

## 步骤 1：创建集群
<a name="getting-started-ec2-cluster-v2"></a>

Amazon ECS 集群是任务、服务和容器实例的逻辑分组。

以下步骤将指导您创建一个集群，该集群具有一个注册的 Amazon EC2 实例，这使我们能够在集群上运行任务。如果未提及特定字段，请保留默认的控制台值。

**要创建新集群（Amazon ECS 控制台）**

在开始之前，分配相应的 IAM 权限。有关更多信息，请参阅 [Amazon ECS 集群示例](security_iam_id-based-policy-examples.md#IAM_cluster_policies)。

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 从导航栏中，选择要使用的区域。

1. 在导航窗格中，选择**集群**。

1. 在 **Clusters**（集群）页面上，选择 **Create cluster**（创建集群）。

1. 在**集群配置**下，为**集群名称**输入唯一名称。

   该名称最多可以包含 255 个字母（大小写字母）、数字和连字符。

1. （可选）要更改任务和服务启动所在的 VPC 和子网，在 **Networking**（联网）下，执行以下任一操作：
   + 要删除子网，请在 **Subnets**（子网）下，为您要删除的每个子网选择 **X**。
   + 要更改为**默认** VPC 以外的 VPC，请在 **VPC** 下选择现有 **VPC**，然后在**子网**下选择每个子网。

1. 要向集群添加 Amazon EC2 实例，请展开**基础设施**，然后选择 **Amazon EC2 实例**。接下来，配置充当容量提供程序的 自动扩缩组：

   1. 要使用现有 自动扩缩组，请从 **自动扩缩组（ASG）**（自动扩缩组（ASG））中，选择组。

   1. 要创建 自动扩缩组，请从 **自动扩缩组（ASG）**（自动扩缩组（ASG））中，选择 **Create new group**（创建新组），然后提供有关组的以下详细信息：
      + 对于**Operating system/Architecture**（操作系统/架构），为 自动扩缩组实例选择经 Amazon ECS 优化的 AMI。
      + 对于 **EC2 实例类型**，选择工作负载的实例类型。有关不同的实例类型更多信息，请参阅 [Amazon EC2 实例](https://aws.amazon.com/ec2/instance-types/)。

         如果 自动扩缩组使用相同或相似的实例类型，则托管扩展效果最佳。
      + 对于 **SSH key pair**（SSH 密钥对），连接到实例时，选择可证明您身份的密钥对。
      + 对于 **Capacity**（容量），输入 自动扩缩组中启动的实例数的最小值和最大值。您的 AWS 资源中有 Amazon EC2 实例时会产生成本。有关更多信息，请参阅 [Amazon EC2 定价](https://aws.amazon.com/ec2/pricing/)。

1. （可选）要打开 Container Insights，请展开 **Monitoring**（监控），然后打开 **Use Container Insights**（使用 Container Insights）。

1. （可选）要管理集群标签，请展开**标签**，然后执行以下操作之一：

   [添加标签] 选择 **Add tag**（添加标签），然后执行以下操作：
   + 对于 **Key**（键），输入键名称。
   + 对于**值**，输入键值。

   [删除标签] 选择标签的“键”和“值”右侧的**Remove**（删除）。

1. 选择**创建**。

## 第 2 步：注册任务定义
<a name="getting-started-ec2-task-def-v2"></a>

**使用 AWS 管理控制台注册示例任务定义**

1. 在导航窗格中，选择 **Task Definitions**。

1. 选择 **Create new task definition**（创建新的任务定义）、**Create new task definition with JSON**（使用 JSON 创建新的任务定义）。

1. 将以下示例任务定义复制并粘贴到框中，然后选择**保存**。

   ```
   {
       "containerDefinitions": [
           {
               "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "essential": true,
               "cpu": 2048,
               "memory": 4096,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "name": "sample_windows_app",
               "portMappings": [
                   {
                       "hostPort": 443,
                       "containerPort": 80,
                       "protocol": "tcp"
                   }
               ]
           }
       ],
       "memory": "4096",
       "cpu": "2048",
       "family": "windows-simple-iis-2019-core",
       "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
       "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
       "requiresCompatibilities": ["EC2"]
   }
   ```

1. 验证您的信息并选择 **Create**。

## 步骤 3：创建服务
<a name="getting-started-ec2-service-v2"></a>

Amazon ECS 服务可帮助您在 Amazon ECS 集群中同时运行和维护指定数量的任务定义实例。如果您的任何任务应该出于任何原因失败或停止，Amazon ECS 服务计划程序将启动另一个任务定义实例来替换它以便在服务中维护所需数量的任务。有关服务的更多信息，请参阅 [Amazon ECS 服务](ecs_services.md)。

**创建服务**

1. 在导航窗格中，选择**集群**。

1. 选择您在 [步骤 1：创建集群](#getting-started-ec2-cluster-v2) 中创建的集群。

1. 在**服务**选项卡上，选择**创建**。

1. 在 **Environment**（环境）部分中，执行以下操作：

   1. 针对 **Compute options**（计算选项），选择 Launch type（启动类型）。

   1. 对于**启动类型**，选择 **EC2**

1. 在 **Deployment configuration**（部署配置）部分中，执行以下操作。

   1. 在 **Family**（系列）中，选择您在 [第 2 步：注册任务定义](#getting-started-ec2-task-def-v2) 中创建的任务定义。

   1. 对于 **Service name**（服务名称），为您的服务输入一个名称。

   1. 对于 **Desired tasks**（所需任务），输入 **1**。

1. 查看选项并选择**创建**。

1. 选择**查看服务**以查看您的服务。

## 步骤 4：查看您的服务
<a name="getting-started-ec2-view-v2"></a>

此服务是一个基于 Web 的应用程序，因此您可以使用 Web 浏览器查看其容器。

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 在导航窗格中，选择**集群**。

1. 选择您在其中运行服务的集群。

1. 在**服务**选项卡中的**服务名称**下，选择您在 [步骤 3：创建服务](#getting-started-ec2-service-v2) 中创建的服务。

1. 选择**任务**选项卡，然后在服务中选择任务。

1. 在“任务”页面的**配置**部分，在**公有 IP** 的下方选择**打开地址**。以下屏幕截图为预期的输出。  
![\[Amazon ECS 示例应用程序的屏幕截图。输出显示“Your application is now running on Amazon ECS”（您的应用程序现在正在 Amazon ECS 上运行）。\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/images/ECS_Sample_Application.png)

## 第 5 步：清除
<a name="getting-started-ec2-cleanup-v2"></a>

完成使用 Amazon ECS 集群后，您应清除与其关联的资源，以避免产生与您未使用的资源相关的费用。

有些 Amazon ECS 资源（如任务、服务、集群和容器实例）是使用 Amazon ECS 控制台清除的。其他资源（例如 EC2 实例、Elastic Load Balancing和自动扩缩组）必须在 Amazon EC2 控制台中手动清除或通过删除创建它们的 CloudFormation 堆栈来清除。

1. 在导航窗格中，选择**集群**。

1. 在**集群**页面上，请选择您为本教程创建的集群。

1. 选择**服务**选项卡。

1. 选择服务，然后选择**删除**。

1. 在确认提示符处，输入 **delete**，然后选择 **Delete**（删除）。

   等待直至系统删除服务。

1. 选择**删除集群**。在确认提示符中，输入 **delete *cluster-name***，然后选择 **Delete**（删除）。删除该集群将清除使用该集群创建的关联资源，包括自动扩缩组、VPC 或负载均衡器。