

# 了解如何为 Amazon ECS 托管实例创建任务
<a name="getting-started-managed-instances"></a>

了解如何将 Amazon ECS 与 Amazon ECS 托管实例结合使用以运行容器化应用程序。

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

 开始教程前，请完成以下任务：
+ 您已完成[设置以使用 Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html)中的步骤。
+ [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中的步骤已完成。
+ 您拥有 Amazon ECS 托管实例所需的 IAM 角色。这包括：
  + 基础设施角色：允许 Amazon ECS 代表您调用 AWS 服务来管理 Amazon ECS 托管实例基础设施。

    有关更多信息，请参阅 [Amazon ECS 基础设施 IAM 角色](infrastructure_IAM_role.md)。
  + 实例配置文件：为在托管实例上运行的 Amazon ECS 容器代理和 Docker 进程守护程序提供权限。

    实例角色名称必须包含 `ecsInstanceRole` 作为前缀，以匹配基础设施角色中的 `iam:PassRole` 操作。

    有关更多信息，请参阅 [Amazon ECS 托管实例实例配置文件](managed-instances-instance-profile.md)。
+ 您已创建要使用的 VPC 和安全组。本教程使用的是托管在 Amazon ECR Public 上的容器映像，因此您的实例必须具有互联网访问权限。要让您的实例路由到互联网，请使用下列选项之一：
  + 将私有子网与具有弹性 IP 地址的 NAT 网关结合使用。
  + 使用公有子网并向实例分配公有 IP 地址。

  有关更多信息，请参阅 [创建虚拟私有云](get-set-up-for-amazon-ecs.md#create-a-vpc)。

  有关安全组的信息，请参阅《Amazon Virtual Private Cloud 用户指南》**中的[您的 VPC 的默认安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#DefaultSecurityGroup)和[示例规则](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#security-group-rule-examples)。
+ （可选）AWS CloudShell 是一种为客户提供命令行的工具，而无需创建自己的 EC2 实例。有关更多信息，请参阅《AWS CloudShell 用户指南》**中的[什么是 AWS CloudShell？](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)。

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

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

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

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

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

1. 在**集群配置**下，对于**集群名称**，请输入集群的唯一名称。

1. 在**基础设施**下，请选择 **Fargate 和托管 EC2**。

1. 配置托管实例设置：

   1. 对于**基础设施角色**，请选择您为托管实例基础设施管理创建的 IAM 角色。

   1. 对于**实例配置文件**，选择您创建的 `ecsInstanceRole`。

   1. 对于**实例属性**，选择**使用 ECS 默认值**。

1. 在**网络**下，为托管实例配置 VPC 和子网：

   1. 对于 **VPC**，选择承载托管实例的 VPC。

   1. 对于**子网**，选择一个或多个将在其中启动托管实例的子网。

   1. 对于 **Security groups**，选择一个或多个安全组。

1. （可选）要向您的集群添加标签，请展开**标签**，然后配置您的标签。

1. 选择**创建**。

## 第 2 步：创建任务定义
<a name="getting-started-step2"></a>

任务定义是应用程序的蓝图。每次在 Amazon ECS 中启动任务时，您都指定任务定义。这样，服务知道要用于容器的 Docker 映像、任务中要使用的容器数量以及为每个容器分配的资源。请按照下面的步骤创建任务定义：

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

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

1. 将下面的 JSON 复制并粘贴到编辑器中，替换预填充的 JSON：

   将 **account-id** 替换为您的 AWS 账户 ID，并将 **region** 替换为您正在使用的区域。

   ```
   {
     "family": "managed-instance-tutorial",
     "networkMode": "awsvpc",
     "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole",
     "containerDefinitions": [
       {
         "name": "sample-app",
         "image": "public.ecr.aws/docker/library/httpd:latest",
         "essential": true,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80,
             "protocol": "tcp"
           }
         ],
         "logConfiguration": {
           "logDriver": "awslogs",
           "options": {
             "awslogs-group": "/ecs/managed-instance-tutorial",
             "awslogs-region": "region",
             "awslogs-stream-prefix": "ecs"
           }
         }
       }
     ],
     "requiresCompatibilities": [
       "MANAGED_INSTANCES"
     ],
     "cpu": "1024",
     "memory": "2048"
   }
   ```

1. 选择**创建**。

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

利用 Amazon ECS 访问，您可在 Amazon ECS 集群中同时运行和维护指定数量的任务定义实例。请按照以下步骤创建服务：

1. 在导航窗格中，选择**集群**，然后选择 **managed-instance-tutorial** 集群。

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

1. 对于**任务定义系列**，选择 **managed-instance-tutorial**。

1. 对于**服务名称**，输入 **managed-instance-tutorial-service**。

1. 在**环境**下，选择**容量提供程序策略**。

1. 在**联网**下，配置以下内容：

   1. 选择现有 VPC 或者创建新的 VPC。

   1. 对于**子网**，选择要使用的子网。

   1. 对于**安全组**，请选择现有的安全组或创建一个允许端口 80 上的入站流量的新安全组。

1. 选择**创建**。

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

在您的服务启动后，您可以查看它以了解更多信息并对其进行测试。

1. 选择 **managed-instance-tutorial-service** 服务。

1. 在**任务**选项卡上，选择正在运行的任务的任务 ID。

1. 在**网络**下的**公有 IP** 中，选择**开放地址**。

1. 您应该会看到 Apache HTTP Server 测试页面，该页面确认 Web 服务器运行正常。

## 第 5 步：清理
<a name="getting-started-step5"></a>

完成本教程后，您应该清理关联的资源，以免产生未使用资源的费用。

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

1. 在**集群**页面上，选择 **managed-instance-tutorial** 集群。

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

1. 选择 **managed-instance-tutorial-service** 服务，然后选择**删除**。

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

1. 删除服务后，请在导航窗格中选择**集群**。

1. 在**集群**页面上，选择 **managed-instance-tutorial** 集群，然后选择**删除集群**。

1. 在确认提示符处，输入 **delete managed-instance-tutorial**，然后选择**删除**。