

# 了解如何为 Fargate 创建 Amazon ECS Linux 任务
<a name="getting-started-fargate"></a>

Amazon Elastic Container Service（Amazon ECS）是一项高度可扩展的快速容器管理服务，可让您轻松运行、停止和管理容器。您可以通过在 AWS Fargate 上启动服务或任务，将容器托管在由 Amazon ECS 管理的无服务器基础设施上。有关 Fargate 的更多信息，请参阅 [面向 Amazon ECS 的 AWS Fargate 架构](AWS_Fargate.md)。

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

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

## 先决条件
<a name="first-run-linux-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="get-started-fargate-cluster"></a>

创建使用默认 VPC 的集群。

在开始之前，分配相应的 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. （可选）要打开 Container Insights，请展开 **Monitoring**（监控），然后打开 **Use Container Insights**（使用 Container Insights）。

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

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

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

1. 选择**创建**。

## 第 2 步：创建任务定义
<a name="get-started-fargate-task-def"></a>

任务定义类似于应用程序的蓝图。每次在 Amazon ECS 中启动任务时，您都指定任务定义。这样，服务知道要用于容器的 Docker 映像、任务中要使用的容器数量以及为每个容器分配的资源。

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

1. 选择 **Create new Task Definition**（创建新的任务定义）、**Create new revision with JSON**（使用 JSON 创建新的修订）。

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

   ```
   {
       "family": "sample-fargate", 
       "networkMode": "awsvpc", 
       "containerDefinitions": [
           {
               "name": "fargate-app", 
               "image": "public.ecr.aws/docker/library/httpd:latest", 
               "portMappings": [
                   {
                       "containerPort": 80, 
                       "hostPort": 80, 
                       "protocol": "tcp"
                   }
               ], 
               "essential": true, 
               "entryPoint": [
                   "sh",
   		"-c"
               ], 
               "command": [
                   "/bin/sh -c \"echo '<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> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
               ]
           }
       ], 
       "requiresCompatibilities": [
           "FARGATE"
       ], 
       "cpu": "256", 
       "memory": "512"
   }
   ```

1. 选择**创建**。

## 第 3 步：创建服务
<a name="create-linux-service"></a>

创建使用该任务定义的服务。

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

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

1. 在**服务详细信息**下，指定如何部署应用程序。

   1. 对于**任务定义系列**，选择您在 [第 2 步：创建任务定义](#get-started-fargate-task-def) 中创建的任务定义。

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

1. 在**环境**下，选择**启动类型**，然后选择 `FARGATE`。

1. 在**部署配置**下，对于**预期任务数**，输入 **1**。

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

1. 选择**创建**。

## 步骤 4：查看您的服务
<a name="view-fargate-windows"></a>

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

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

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

1. 在**服务**选项卡中的**服务名称**下，选择您在 [第 3 步：创建服务](#create-linux-service) 中创建的服务。

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

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

## 第 5 步：清理
<a name="windows-fargate-cleanup"></a>

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

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

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

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

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

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

1. 在确认提示符处，输入 **delete**，然后选择 **Delete**（删除）。您也可以使用 `Force delete` 选项，让 Amazon ECS 在将其删除之前代表您缩减服务。

   等待直至系统删除服务。

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