

# Fargate 用の Amazon ECS Windows タスクを作成する方法について説明します。
<a name="Windows_fargate-getting_started"></a>

Amazon ECS が AWS Fargate をサポートするリージョンで、タスクに Fargate を使用して、Amazon ECS on AWS Fargate の利用を開始します。

AWS Fargateで Amazon ECSの使用を開始するには、以下のステップを完了します。

## 前提条件
<a name="first-run-prereqs-windows"></a>

開始する前に、[Amazon ECS を使用するようにセットアップする](get-set-up-for-amazon-ecs.md) のステップを完了し、IAM ユーザーに `AdministratorAccess` IAM ポリシー例で指定されているアクセス許可があることを確認します。

コンソールは、Fargate タスクに必要なタスク実行 IAM ロールを自動で作成しようとします。コンソールがこの IAM ロールを作成できるようにするには、次のいずれかがtrueである必要があります。
+ ユーザーが管理者権限を持っていることが必要です。詳細については、「[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 が開いている必要があります。セキュリティグループに次のインバウンドルールを追加します。セキュリティグループの作成方法については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンス用のセキュリティグループの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-security-group.html)」を参照してください。  
Type: HTTP
[Protocol]: TCP
ポート範囲: 80
ソース: 任意の場所 (`0.0.0.0/0`)

## ステップ 1: クラスターを作成する
<a name="create_fargate_windows_cluster-v2"></a>

デフォルトの VPCを使用する **[ウィンドウズ]** という名前の新しいクラスターを作成できます。

**AWS マネジメントコンソール を使用してクラスターを作成するには**

1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

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

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

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

1. **[Cluster configuration]** (クラスター設定) の **[Cluster name]** (クラスター名) に**「windows」**と入力します。

1. (オプション) Container Insights を有効にするには、**[Monitoring]** (モニタリング) を展開し、**[Use Container Insights]** (Container Insights を使用する) をオンにします。

1. (オプション) クラスターを識別しやすくするには、**[Tags]** (タグ) を展開し、タグを設定します。

   [タグの追加] [**タグの追加**] を選択して、以下を実行します。
   + [**キー**] にはキー名を入力します。
   + [**値**] にキー値を入力します。

   [タグを削除] タグのキーと値の右側にある [**削除**] を選択します。

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

## ステップ 2: Windows タスク定義を登録する
<a name="register_fargate_windows_task_def_console"></a>

Amazon ECS クラスターで Windows コンテナを実行する前に、タスク定義を登録する必要があります。次のタスク定義の例では、`mcr.microsoft.com/windows/servercore/iis` コンテナイメージを使用してコンテナインスタンスのポート 8080 でシンプルなウェブページを表示します。

**AWS マネジメントコンソール を使用してサンプルタスク定義を登録するには**

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

1. **[Create new task definition]** (新しいタスク定義の作成)、**[Create new task definition with JSON]** (JSON で新しいタスク定義を作成) の順に選択します。

1. 以下のタスク定義の例をコピーしてボックスに貼り付け、[**Save (保存)**] を選択します。

   ```
   {
       "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 つのタスクを配置します。

**コンソールを使用してタスク定義からサービスを作成するには**

1. ナビゲーションペインで、**[Clusters]** (クラスター) を選択してから、[ステップ 1: クラスターを作成する](#create_fargate_windows_cluster-v2) で作成したクラスターを選択します。

1. **[Services]** (サービス) タブから、**[Create]** (作成) を選択します。

1. **[Deployment configure]** (デプロイ設定) で、アプリケーションのデプロイ方法を指定します。

   1. **[Task definition]** (タスク定義) で、[ステップ 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. ナビゲーションペインで **[Clusters]** (クラスター) を選択してください。

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 コンソールを使用してクリーンアップします。Amazon EC2 インスタンス、Elastic Load Balancing ロードバランサー、Auto Scaling グループなど他のリソースは、Amazon EC2 コンソールで手動でクリーンアップするか、それを作成した CloudFormation スタックを削除することでクリーンアップする必要があります。

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

1. **[クラスター]** ページで、このチュートリアル用に作成したクラスターを選択します。

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

1. サービス > **[削除]** の順に選択します。

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

   サービスが削除されるまでお待ちください。

1. [**Delete Cluster**] を選択します。確認プロンプトで、**delete *cluster-name***と入力し、**[Delete]** (削除) を選択します。クラスターを削除すると、Auto Scaling グループ、VPC、ロードバランサーなどを含むクラスターで作成された関連リソースがクリーンアップされます。