

# 了解如何为 Fargate 创建 Amazon ECS Windows 任务
<a name="Windows_fargate-getting_started"></a>

通过在 Amazon ECS 支持 AWS Fargate 的区域中将 Fargate 用于您的任务，开始在 AWS Fargate 上使用 Amazon ECS。

要在 AWS Fargate 上开始使用 Amazon ECS，请完成以下步骤。

## 先决条件
<a name="first-run-prereqs-windows"></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="create_fargate_windows_cluster-v2"></a>

您可以创建名为 **windows** 并且使用默认 VPC 的新集群。

**使用 AWS 管理控制台创建集群**

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

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

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

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

1. 在**集群配置**下方的**集群名称**中，输入 **windows**。

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

1. （可选）为了帮助识别您的集群，请展开**标签**，然后配置您的标签。

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

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

1. 选择**创建**。

## 步骤 2：注册 Windows 任务定义
<a name="register_fargate_windows_task_def_console"></a>

您必须先注册任务定义，然后才能在 Amazon ECS 集群中运行 Windows 容器。以下任务定义示例在具有 `mcr.microsoft.com/windows/servercore/iis` 容器映像的容器实例的端口 8080 上显示一个简单网页。

**使用 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": 80,
                       "containerPort": 80,
                       "protocol": "tcp"
                   }
               ]
           }
       ],
       "memory": "4096",
       "cpu": "2048",
       "networkMode": "awsvpc",
       "family": "windows-simple-iis-2019-core",
       "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
       "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
       "requiresCompatibilities": ["FARGATE"]
   }
   ```

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

## 步骤 3：使用您的任务定义创建服务
<a name="create_fargate_windows_service_console"></a>

在注册任务定义后，您可以使用任务定义在集群中放置任务。以下过程使用任务定义创建一个服务并将一个任务放置在集群中。

**使用控制台从任务定义创建服务**

1. 在导航窗格中，选择 **Clusters**（集群），然后选择您在 [步骤 1：创建集群](#create_fargate_windows_cluster-v2) 中创建的集群。

1. 在 **Services**（服务）选项卡上，选择 **Create**（创建）。

1. 在 **Deployment configuration**（部署配置）下，指定应用程序的部署方式。

   1. 在 **Task Definitions**（任务定义）中，选择您在 [步骤 2：注册 Windows 任务定义](#register_fargate_windows_task_def_console) 中创建的任务定义。

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

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

1.  在**联网**下，您可以为创建安全组或者选择现有安全组。确保您使用的安全组具有 [先决条件](#first-run-prereqs-windows) 下列出的入站规则。

1. 选择**创建**。

## 步骤 4：查看您的服务
<a name="view_windows_fargate_service"></a>

当您的服务在集群中启动任务后，您可以查看服务并在浏览器中打开 IIS 测试页面以验证容器是否正在运行。

**注意**  
下载容器实例并提取 Windows 容器基础层最多需要花费 15 分钟的时间。

**查看您的服务**

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

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

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

1. 在**服务**选项卡中的**服务名称**下，选择您在 [步骤 3：使用您的任务定义创建服务](#create_fargate_windows_service_console) 中创建的服务。

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

1. 在“任务”页面的**配置**部分，在**公有 IP** 的下方选择**打开地址**。

## 第 5 步：清除
<a name="first-fargate-run-cleanup"></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 或负载均衡器。