

# 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 デーモンへのアクセス許可を提供します。

    インスタンスロール名には、インフラストラクチャロールの `iam:PassRole` アクションと一致するプレフィックスとして `ecsInstanceRole` を含める必要があります。

    詳細については、「[Amazon ECS マネージドインスタンスのインスタンスプロファイル](managed-instances-instance-profile.md)」を参照してください。
+ VPC およびセキュリティグループが使用できるように作成されていること。このチュートリアルは、Amazon ECR パブリックにホストされているコンテナイメージを使用するため、インスタンスではインターネットアクセスが必要になります。インスタンスでインターネットへのルートを設定するには、以下のいずれかのオプションを使用します。
  + Elastic 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. Amazon ECS コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

1. ナビゲーションバーから、使用するリージョンを選択します。

1. ナビゲーションペインで **[Clusters]** (クラスター) を選択してください。

1. **[Clusters]** (クラスター) ページで、**[Create Cluster]** (クラスターの作成) を選択します。

1. **[クラスター設定]** で、**[クラスター名]** にクラスターの一意の名前を入力します。

1. **[インフラストラクチャ]** で、**[Fargate とマネージド EC2]** を選択します。

1. マネージドインスタンスの設定を次のように行います。

   1. **[インフラストラクチャロール]** で、マネージドインスタンスのインフラストラクチャ管理用に作成した IAM ロールを選択します。

   1. **[IAM インスタンスプロファイル]** で、作成した `ecsInstanceRole` を選択します。

   1. **[インスタンス属性]** で、**[ECS デフォルトを使用する]** を選択します。

1. **[ネットワーキング]**で、マネージドインスタンスの VPC とサブネットを設定します。

   1. **[VPC]** で、ターゲットインスタンスをホストする VPC を選択してください。

   1. **[サブネット]**で、マネージドインスタンスを起動するサブネットを 1 つ以上選択します。

   1. [**Security groups**] で、1 つまたは複数のセキュリティグループを選択してください。

1. (オプション) クラスターにタグを追加するには、**[タグ]** を展開して設定します。

1. **[作成]** を選択します。

## ステップ 2: タスク定義を作成する
<a name="getting-started-step2"></a>

タスク定義はアプリケーションのブループリントです。Amazon ECS でタスクを起動するたびに、タスク定義を指定します。サービスは、コンテナに使用する Docker イメージ、タスクで使用するコンテナの数、各コンテナのリソース割り当てを認識します。タスク定義を作成するには、次の手順に従います。

1. ナビゲーションペインで、**[タスク定義]** を選択します。

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 サーバーのテストページが表示されます。

## ステップ 5：クリーンアップ
<a name="getting-started-step5"></a>

このチュートリアルが終了したら、使用していないリソースに対する料金が発生しないように、関連付けられたリソースをクリーンアップする必要があります。

1. ナビゲーションペインで **[Clusters]** (クラスター) を選択してください。

1. **[クラスター]** ページで、**managed-instance-tutorial** クラスターを選択します。

1. **[サービス]** タブを選択します。

1. [**managed-instance-tutorial-service** サービス]、**[削除]** の順に選択します。

1. 確認プロンプトで **delete** と入力し、**[削除]** を選択します。

1. サービスが削除されたら、ナビゲーションペインで **[クラスター]** を選択します。

1. **[クラスター]** ページで **managed-instance-tutorial** クラスターを選択し、**[クラスターの削除]** を選択します。

1. 確認プロンプトで **delete managed-instance-tutorial** と入力し、**[削除]** を選択します。