EC2 起動タイプ用の Amazon ECS Windows タスクを作成する方法について説明します。 - Amazon Elastic Container Service

EC2 起動タイプ用の Amazon ECS Windows タスクを作成する方法について説明します。

EC2 起動タイプを使用して Amazon ECS を開始するには、タスク定義を登録し、クラスターを作成し、コンソールにサービスを作成します。

EC2 起動タイプを使用して、Amazon ECS を開始するには、以下の手順を完了します。

前提条件

開始する前に、Amazon ECS を使用するようにセットアップする のステップを完了し、AWS ユーザーに AdministratorAccess IAM ポリシー例で指定されているアクセス許可があることを確認します。

コンソールは、Fargate タスクに必要なタスク実行 IAM ロールを自動で作成しようとします。コンソールがこの IAM ロールを作成できるようにするには、次のいずれかがtrueである必要があります。

重要

タスク定義を使用してサービスを作成するときに選択するセキュリティグループには、インバウンドトラフィック用にポート 80 が開いている必要があります。セキュリティグループに次のインバウンドルールを追加します。セキュリティグループの作成方法については、「Amazon EC2 ユーザーガイド」の「Add rules to your security group」を参照してください。

  • [Type]: HTTP

  • [Protocol]: TCP

  • ポート範囲: 80

  • ソース: 任意の場所 (0.0.0.0/0)

ステップ 1: クラスターを作成する

Amazon ECS クラスターはタスク、サービス、およびコンテナインスタンスの論理グループです。

以下では、1 つの Amazon EC2 インスタンスが登録されたクラスターを作成し、そこでタスクを実行できるようにするステップについて説明します。特定のフィールドが示されていない場合は、コンソールのデフォルト値のままにします。

新しいクラスターを作成するには (Amazon ECS コンソール)

開始する前に、適切な IAM アクセス許可を割り当ててください。詳細については、「Amazon ECS クラスターの例」を参照してください。

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

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

  3. ナビゲーションペインで [Clusters] (クラスター) を選択します。

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

  5. [Cluster configuration] (クラスター設定) で、[Cluster name] (クラスター名) に一意の名前を入力します。

    名前には、最大 255 文字 (大文字と小文字)、数字、およびハイフンを含めることができます。

  6. (オプション) タスクとサービスが起動する VPC とサブネットを変更するには、[Networking] (ネットワーク) で、次のいずれかのオペレーションを実行します。

    • サブネットを削除するには、[Subnets] (サブネット) で、削除するサブネットごとに [X] を選択します。

    • [default] (デフォルト) VPC 以外の VPC に変更するには、[VPC] で既存の [VPC] を選択し、[Subnets] (サブネット) で各サブネットを選択します。

  7. クラスターに Amazon EC2 インスタンスを追加するには、[インフラストラクチャー] を展開して [Amazon EC2 インスタンス] を選択します。次に、キャパシティープロバイダーとして機能する Auto Scaling グループを設定します。

    1. 既存の Auto Scaling グループを使用するには、[Auto Scaling group (ASG)] (Auto Scaling グループ) からグループを選択します。

    2. Auto Scaling グループを作成するには、Auto Scaling group(ASG) (Auto Scaling グループ) から、[Create new group] (新しいグループの作成) を選択し、グループに関する以下の詳細情報を入力します。

      • Operating system/Architecture (オペレーティングシステム/アーキテクチャ) を使用する場合、Auto Scaling グループインスタンスの Amazon ECS 最適化 AMI を選択します。

      • [EC2 instance type] (EC2 インスタンスタイプ) を使用する場合、ワークロードのインスタンスタイプを選択します。さまざまなインスタンスタイプに関する詳細については、Amazon EC2 インスタンスを参照してください。

        マネージドスケーリングは、Auto Scaling グループが同じインスタンスタイプまたは類似のインスタンスタイプを使用している場合に最適です。

      • [SSH key pair] (SSH キーペア) を使用する場合、インスタンスに接続する際に ID を証明するペアを選択してください。

      • [Capacity] (キャパシティー) には、Auto Scaling グループで起動するインスタンスの最小数と最大数を入力します。Amazon EC2 instances が AWS リソースに存在する間、コストが発生します。詳細については、「Amazon EC2 の料金」を参照してください。

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

  9. (オプション) クラスタータグを管理するには、[Tags] (タグ) を展開し、次のいずれかのオペレーションを実行します。

    [タグの追加] [タグの追加] を選択して、以下を実行します。

    • [キー] にはキー名を入力します。

    • [] にキー値を入力します。

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

  10. [Create] (作成) を選択します。

ステップ 2: タスク定義を登録する

AWS Management Console を使用してサンプルタスク定義を登録するには
  1. ナビゲーションペインで、[タスク定義] を選択します。

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

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

    { "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": 443, "containerPort": 80, "protocol": "tcp" } ] } ], "memory": "4096", "cpu": "2048", "family": "windows-simple-iis-2019-core", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"}, "requiresCompatibilities": ["EC2"] }
  4. 情報を確認し、[Create] (作成) を選択します。

ステップ 3: サービスを作成する

Amazon ECS サービスを使用すると、Amazon ECS クラスター内で、タスク定義の指定した数のインスタンスを同時に実行して維持するのに役立ちます。タスクが何らかの理由で失敗または停止した場合、 Amazon ECS サービススケジューラは、タスク定義の別のインスタンスを起動してそれに置き換え、サービスで必要な数のタスクを維持します。サービスの詳細については、「Amazon ECS サービス」を参照してください。

サービスを作成するには
  1. ナビゲーションペインで [Clusters] (クラスター) を選択します。

  2. ステップ 1: クラスターを作成する で作成したクラスターを選択します。

  3. [Services (サービス)] タブで、[Create (作成]) を選択します。

  4. [Environment] (環境) セクションで、以下を実行します。

    1. [Compute options] (コンピューティングオプション) では、[Launch type] (起動タイプ) を選択します。

    2. [起動タイプ] で [EC2] をクリックします。

  5. [Deployment configuration] (デプロイ設定) セクションで、以下を実行します。

    1. [Family] (ファミリー) で、ステップ 2: タスク定義を登録する で作成したタスク定義を選択します。

    2. [Service name] (サービス名) でサービスの名前を入力します。

    3. [Desired tasks] (必要なタスク) に、1と入力します。

  6. オプションを確認し [作成] を選択します。

  7. [View service (サービスの表示)] を選択して、サービスを確認します。

ステップ 4: サービスを表示する

このサービスはウェブベースのアプリケーションであるため、ウェブブラウザでコンテナを表示できます。

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

  2. ナビゲーションペインで [Clusters] (クラスター) を選択します。

  3. サービスを実行したクラスターを選択します。

  4. [サービス] タブの [サービス名] で、ステップ 3: サービスを作成する に作成したサービスを選択します。

  5. [タスク] タブ > サービス内のタスクの順に選択します。

  6. [タスク] ページの [設定] セクションの [パブリック IP] で、[オープンアドレス] を選択します。以下のスクリーンショットは想定される出力です。

    Amazon ECS サンプルアプリケーションのスクリーンショット。出力には、「アプリケーションは現在 Amazon ECS で実行されています」と表示されます。

ステップ 5: クリーンアップ

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

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

  1. ナビゲーションペインで [Clusters] (クラスター) を選択します。

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

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

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

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

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

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