

# 使用 AWS 管理控制台 创建 Amazon ECS 集群自动扩缩资源
<a name="tutorial-cluster-auto-scaling-console"></a>

了解如何使用 AWS 管理控制台 创建用于集群自动扩缩的资源。如果资源需要名称，我们将使用前缀 `ConsoleTutorial` 来确保它们都具有唯一的名称，并使它们易于找到。

**Topics**
+ [先决条件](#console-tutorial-prereqs)
+ [步骤 1：创建 Amazon ECS 集群](#console-tutorial-cluster)
+ [第 2 步：注册任务定义](#console-tutorial-register-task-definition)
+ [第 3 步：运行任务](#console-tutorial-run-task)
+ [第 4 步：验证](#console-tutorial-verify)
+ [第 5 步：清理](#console-tutorial-cleanup)

## 先决条件
<a name="console-tutorial-prereqs"></a>

本教程假设以下先决条件已完成：
+ [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中的步骤已完成。
+ 您的 IAM 用户具有 [AmazonECS\_FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess) IAM 策略示例中指定的必需权限。
+ 创建 Amazon ECS 容器实例 IAM 角色。有关更多信息，请参阅 [Amazon ECS 容器实例 IAM 角色](instance_IAM_role.md)。
+ 创建 Amazon ECS 服务相关 IAM 角色。有关更多信息，请参阅 [对 Amazon ECS 使用服务相关角色](using-service-linked-roles.md)。
+ 创建自动扩缩服务相关 IAM 角色。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 用户指南](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html)中的 *Amazon EC2 Auto Scaling 的服务相关角色*。
+ 您已创建要使用的 VPC 和安全组。有关更多信息，请参阅 [创建虚拟私有云](get-set-up-for-amazon-ecs.md#create-a-vpc)。

## 步骤 1：创建 Amazon ECS 集群
<a name="console-tutorial-cluster"></a>

请按照以下步骤创建 Amazon ECS 集群。

Amazon ECS 将代表您创建一个 Amazon EC2 Auto Scaling 启动模板和自动扩缩组，作为 CloudFormation 堆栈的一部分。

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

1. 在导航窗格中，选择**集群**，然后选择**创建集群**。

1. 在**集群配置**下方的**集群名称**中，输入 `ConsoleTutorial-cluster`。

1. 在**基础设施**下，清除 AWS Fargate（无服务器），然后选择 **Amazon EC2 实例**。接下来，配置充当容量提供程序的自动扩缩组。

   1. 在**自动扩缩组（ASG）**下。选择**创建新 ASG**，然后提供有关该组的以下详细信息：
     + 对于**操作系统/架构**，选择 **Amazon Linux 2**。
     + 对于 **EC2 实例类型**，选择 **t3.nano**。
     + 对于 **Capacity**（容量），输入 自动扩缩组中启动的实例数的最小值和最大值。

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

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

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

1. 选择**创建**。

## 第 2 步：注册任务定义
<a name="console-tutorial-register-task-definition"></a>

您必须先注册任务定义，然后才能在集群上运行任务。任务定义是分组在一起的一系列容器。以下示例是一个简单的任务定义，它使用 Docker Hub 中的 `amazonlinux` 映像，并且直接休眠。有关可用任务定义参数的更多信息，请参阅 [Amazon ECS 任务定义](task_definitions.md)。

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

1. 在导航窗格中，选择 **Task definitions**（任务定义）。

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

1. 在 **JSON 编辑器**框中，粘贴以下内容。

   ```
   {
       "family": "ConsoleTutorial-taskdef",
       "containerDefinitions": [
           {
               "name": "sleep",
               "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
               "memory": 20,
               "essential": true,
               "command": [
                   "sh",
                   "-c",
                   "sleep infinity"
               ]
           }
       ],
       "requiresCompatibilities": [
           "EC2"
       ]
   }
   ```

1. 选择**创建**。

## 第 3 步：运行任务
<a name="console-tutorial-run-task"></a>

为您的账户注册任务定义后，您可以在集群中运行任务。在本教程中，您将在 `ConsoleTutorial-cluster` 集群中运行五个 `ConsoleTutorial-taskdef` 任务定义实例。

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

1. 在**集群**页面上，选择 **ConsoleTutorial-cluster**。

1. 在**任务**下，选择**运行新任务**。

1. 在**环境**部分的**计算选项**下，选择**容量提供程序策略**。

1. 在**部署配置**下，对于**应用程序类型**，选择**任务**。

1.  从**系列**下拉列表中选择 **ConsoleTutorial-taskdef**。

1. 在**所需任务**下，输入 5。

1. 选择**创建**。

## 第 4 步：验证
<a name="console-tutorial-verify"></a>

本教程到目前为止，您应该有一个运行五个任务的集群和一个带有容量提供程序的自动扩缩组。容量提供程序已启用 Amazon ECS 托管扩展。

我们可以通过查看 CloudWatch 指标、自动扩缩组设置和 Amazon ECS 集群任务计数来确认是否一切正常。

**查看集群的 CloudWatch 指标**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在屏幕顶部的导航栏中，选择 区域。

1. 在导航窗格中，在**指标**下，选择**所有指标**。

1. 在**所有指标**页面的**浏览**选项卡下，选择 `AWS/ECS/ManagedScaling`。

1. 选择 **CapacityProviderName, ClusterName**。

1. 选中与 `ConsoleTutorial-cluster` **集群名称**对应的复选框。

1. 在**图形化指标**选项卡下，将**周期**更改为 **30 秒**，将**统计数据** 更改为**最大**。

   图中的值显示了容量提供程序的目标容量值。它应该从 `100` 开始，这是我们设定的目标容量百分比。您应该看到它纵向扩展到 `200`，这将触发目标跟踪调整策略的警报。然后，警报将触发自动扩缩组横向扩展。

按照以下步骤查看您的自动扩缩组详细信息，以确认执行了横向扩展操作。

**确认 自动扩缩组已扩展**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在屏幕顶部的导航栏中，选择 区域。

1. 在导航窗格的 **Auto Scaling** 下，选择 **自动扩缩组**。

1. 选择在本教程中创建的 `ConsoleTutorial-cluster` 自动扩缩组。查看**所需容量**下的值，然后在**实例管理**选项卡下查看实例，以确认您的组已横向扩展到两个实例。

按照以下步骤查看您的 Amazon ECS 集群，以确认 Amazon EC2 实例已注册到集群，并且您的任务已转变为 `RUNNING` 状态。

**要验证 自动扩缩组中的实例**

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

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

1. 在 **Clusters**（集群）页面上，选择 `ConsoleTutorial-cluster` 集群。

1. 在**任务**选项卡上，确认您看到五个处于 `RUNNING` 状态的任务。

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

完成本教程后，请清除与本教程关联的资源，以避免对您未使用的资源产生费用。不支持删除容量提供程序和任务定义，但这些资源不会产生任何开销。

**清除教程资源**

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

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

1. 在**集群**页面上，选择 **ConsoleTutorial-cluster**。

1. 在 **ConsoleTutorial-cluster** 页面上，选择**任务**选项卡，然后选择**停止**、**全部停止**。

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

1. 在**集群**页面上，选择 **ConsoleTutorial-cluster**。

1. 在页面的右上角，选择**删除集群**。

1. 在确认框中，输入 **delete **ConsoleTutorial-cluster****，然后选择**删除**。

1. 按照以下步骤删除 自动扩缩组。

   1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

   1. 在屏幕顶部的导航栏中，选择 区域。

   1. 在导航窗格的 **Auto Scaling** 下，选择 **自动扩缩组**。

   1. 选择 `ConsoleTutorial-cluster` 自动扩缩组，然后选择**操作**。

   1.  从 **Actions** 菜单中选择 **Delete **。在确认框中，输入 ** delete**，然后选择**删除**。