Windows コンテナの開始方法 - Amazon Elastic Container Service

Windows コンテナの開始方法

このチュートリアルでは、AWS Management Consoleで Amazon EC2 最適化 Windows サーバー AMI を使用して、Amazon ECS 上で Windows コンテナを Amazon EC2 で実行する手順wo説明します。Windows コンテナインスタンスのクラスターを作成し、クラスターで 1 つ以上のコンテナインスタンスを起動します。次に、Windows コンテナイメージを使用するタスク定義を登録し、そのタスク定義を使用するサービスを作成して、コンテナが実行するサンプルのウェブページを表示します。詳細については、「Windows コンテナ」を参照してください。

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

Windows コンテナの新しいクラスターを作成することができます。LinuxのAmazon ECS最適化AMIを使用するAmazon EC2インスタンスは、Windowsコンテナを実行することができず、その逆もできません。したがって、適切なタスクの配置は、WindowsとLinuxのコンテナインスタンスを別々のクラスターで実行することで最も効果的に実現します。このチュートリアルでは、windows というクラスターを作成し、Windows コンテナのクラスターに 1 つ以上の Amazon EC2 インスタンスを登録します。

AWS Management Console を使用してクラスターを作成するには

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

  2. ナビゲーションペインで [Clusters] を選択します。

  3. [Clusters] ページで、[Create Cluster] を選択します。

  4. [EC2 Windows + Networking]、[Next step] の順に選択します。

  5. [クラスター名] に、クラスターの名前を入力します (この例では、windowsがクラスターの名前です)。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。

  6. [インスタンスの設定] セクションで、以下のステップを実行します。

    1. [プロビジョニングモデル] で、以下のインスタンスタイプのいずれかを選択します。

      • [オンデマンドインスタンス] – オンデマンドインスタンスでは、長期間のコミットメントや前払いなしに、時間単位で、コンピューティング性能に対して料金を支払います。

      • Spot - スポットインスタンスでは、スペアのAmazon EC2 のコンピューティング性能をオンデマンド価格の最大で 90% まで入札することができます。詳細については、「スポットインスタンス」を参照してください。

        注記

        スポットインスタンスは中断される可能性があります。中断できないアプリケーションに対しては、スポットインスタンスを使用しないことをお勧めします。詳細については、「スポットインスタンスの中断」を参照してください。

    2. スポットインスタンスを使用する場合は、ここで説明している手順に従います。使用しない場合は、次の手順に進みます。

      1. [Spot Instance allocation strategy] で、お客様のニーズに合った戦略を選択します。詳細については、「スポットフリートの配分戦略」を参照してください。

      2. [Maximum bid price (per instance/hour)] で、入札価格を指定します。入札価格が、選択したインスタンスタイプのスポット料金より低い場合、スポットインスタンスは起動されません。

    3. [EC2 インスタンスタイプ] ページで、インスタンスのハードウェア構成を選択します。選択したインスタンスタイプによって、タスクの実行に使用できるリソースが決まります。

    4. [インスタンス数] で、クラスターに起動するAmazon EC2 インスタンスの数を選択します。

    5. [EC2 AMI Id (EC2 AMI ID)] で、コンテナインスタンスに使用する Amazon ECS 最適化 AMI を選択します。使用可能な AMIs は、選択したリージョンとインスタンスタイプによって決まります。詳細については、「Amazon ECS に最適化された AMI」を参照してください。

    6. [EBS storage (GiB) (EBS ストレージ (GiB)] で、コンテナインスタンスのデータストレージに使用する Amazon EBS ボリュームのサイズを選択します。データボリュームのサイズを増やしてイメージとコンテナのストレージを拡大できます。

    7. [キーペア] で、RDPアクセスのためにコンテナインスタンスで 使用する Amazon EC2 キーペアを選択します。キーペアを指定しないと、RDP を使用してコンテナインスタンスに接続することはできません。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 のキーペア」を参照してください。

  7. [Networking] セクションで、コンテナインスタンスを起動する VPC を設定します。デフォルトでは、クラスター作成ウィザードで作成される新しい VPC には、異なるアベイラビリティーゾーンの 2 つのサブネットと、ポート 80 でインターネットに開かれているセキュリティグループが設定されます。HTTP サービスには、この基本的な設定で十分です。ただし、これらの設定は以下のサブステップに従って変更できます。

    1. [VPC] で、新しい VPC を作成するか、既存の VPC を選択します。

    2. (オプション) 新しい VPC を作成することを選択した場合は、[CIDR Block] で VPC の CIDR ブロックを選択します。詳細については、Amazon VPC ユーザーガイド の「VPC とサブネット」を参照してください。

    3. [Subnets (サブネット)] で、VPC に使用するサブネットを選択します。新しい VPC を作成することを選択した場合は、デフォルト設定をそのまま使用するか、ニーズに合わせて変更することができます。既存の VPC を使用することを選択した場合は、その VPC でクラスターに使用する 1 つ以上のサブネットを選択します。

    4. [セキュリティグループ] で、クラスターのコンテナインスタンスにアタッチするセキュリティグループを選択します。新しいセキュリティグループを作成することを選択した場合は、受信トラフィックを許可する CIDR ブロックを指定できます。デフォルトのポート 0.0.0.0/0 はインターネットに開放されています。1 つのポートまたは連続した一連のポートをコンテナインスタンスで開くポートとして選択できます。より複雑なセキュリティグループルールの場合は、作成済みの既存のセキュリティグループを選択できます。

      注記

      新しいセキュリティグループを作成することを選択し、クラスターの作成後にルールを変更することもできます。詳細は、「Windows インスタンス用 Amazon EC2 ユーザーガイド」のWindows インスタンス用 Amazon EC2 セキュリティグループ」を参照してください。

    5. [コンテナインスタンスの IAM ロール] セクションで、コンテナインスタンスで使用する IAM ロールを選択します。アカウントにコンソールの初回実行ウィザードで作成されている ecsInstanceRole がある場合は、それがデフォルトで選択されます。このロールがアカウントにない場合は、このロールを作成することを選択できます。または別の IAM; ロールを選択してコンテナインスタンスで使用することもできます。

      重要

      使用する IAM ロールには、AmazonEC2ContainerServiceforEC2Roleマネージド ポリシーがアタッチされている必要があります。アタッチされていない場合、クラスターの作成時にエラーが発生します。適切な IAM アクセス許可を使用してコンテナインスタンスを起動しないと、Amazon ECS エージェントはクラスターに接続されません。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

    6. 先ほど スポットインスタンス タイプを選択した場合、[Spot Fleet Role IAM role (スポットフリートロール IAM ロール)] セクションでは、IAM ロール ecsSpotFleetRole が作成されることが示されています。

  8. タグセクションでは、クラスターに関連付ける各タグのキーと値を指定します。詳細については、「Amazon ECS リソースにタグを付ける」を参照してください。

  9. [ CloudWatch コンテナインサイト] セクションで、クラスターの コンテナ インサイト を有効にするかどうかを選択します。詳細については、「Amazon ECS CloudWatch コンテナ インサイト」を参照してください。

  10. [Create] を選択します。

    注記

    Windows コンテナインスタンスがクラスターに登録されるまでには最大 15 分かかる場合があります。

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

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

AWS Management Console を使用してサンプルタスク定義を登録するには

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

  2. ナビゲーションペインで、[Task Definitions (タスク定義)] を選択します。

  3. [Task Definitions] ページで、[Create new Task Definition] を選択します。

  4. [Select launch type compatibilities (起動タイプの互換性の選択)] ページで、[EC2]、[Next step (次のステップ)] の順に選択します。

    注記

    Fargate 起動タイプは Windows コンテナと互換性がありません。

  5. ページの末尾までスクロールし、[Configure via JSON] を選択します。

  6. 以下のサンプルタスク定義 JSON をテキスト領域に貼り付け (その領域にあらかじめ入力されている JSON を置き換え)、[Save] を選択します。

    { "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 512, "entryPoint":["powershell", "-Command"], "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType 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>' -Force ; C:\\ServiceMonitor.exe w3svc"], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ], "memory": 768, "essential": true } ] }
  7. 情報を確認し、[Create] を選択します。

AWS CLI を使用してサンプルタスク定義を登録するには

  1. windows-simple-iis.json という名前のファイルを作成します。

  2. このファイルを任意のテキストエディタで開き、上のサンプルの JSON を追加して保存します。

  3. AWS CLI を使用し、次のコマンドを実行して Amazon ECS にタスク定義を登録します。

    注記

    Windows クラスターがあるリージョンと同じリージョンを使うように AWS CLI が設定されていることを確認します。そうでない場合は、--region your_cluster_region オプションをコマンドに追加します。

    aws ecs register-task-definition --cli-input-json file://windows-simple-iis.json

ステップ 3: タスク定義を使用してサービスを作成する

タスク定義を登録したら、それを使用してクラスターにタスクを配置できます。次の手順では、タスク定義を使用してサービスを作成し、クラスターに 1 つのタスクを配置します。

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

  1. [Task Definition: windows-simple-iis] 登録確認ページで、[Actions]、[Create Service] の順に選択します。

  2. [Create Service] ページで、以下の情報を入力し、[Create service] を選択します。

    • 起動タイプ: EC2

    • Cluster: windows

    • Service name: windows-simple-iis

    • サービスタイプ: REPLICA

    • Number of tasks: 1

    • デプロイタイプ: ローリング更新

AWS CLI でタスク定義からサービスを作成するには

  • AWS CLI で、次のコマンドを実行してサービスを作成します。

    aws ecs create-service --cluster windows --task-definition windows-simple-iis --desired-count 1 --service-name windows-simple-iis

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

サービスによってクラスターでタスクが起動されたら、サービスを表示し、ブラウザで IIS テストページを開いてコンテナが実行中であることを確認できます。

注記

コンテナインスタンスで Windows コンテナベースレイヤーをダウンロードして抽出するまでに最大 15 分かかる場合があります。

サービスを表示するには

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

  2. [Clusters] ページで、[windows] クラスターを選択します。

  3. [Services] タブで、[windows-simple-iis] サービスを選択します。

  4. [Service: windows-simple-iis] ページで、サービスのタスクのタスク ID を選択します。

  5. [Task] ページで、iis コンテナを展開してその情報を表示します。

  6. コンテナの [Network bindings] で、[External Link] の IP アドレスとポートの組み合わせのリンクを確認します。そのリンクを選択してブラウザで IIS テストページを開きます。

    
                        Windows のシンプルな IIS テストページ