Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

Windows コンテナの開始方法

このチュートリアルでは、Amazon ECS-optimized Windows AMI を使用して、手動により Windows コンテナを Amazon ECS で実行する手順について説明します。Windows コンテナインスタンスのクラスターを作成し、クラスターで 1 つ以上のコンテナインスタンスを起動します。次に、Windows コンテナイメージを使用するタスク定義を登録し、そのタスク定義を使用するサービスを作成して、コンテナが実行するサンプルのウェブページを表示します。

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

Windows コンテナの新しいクラスターを作成する必要があります。Linux コンテナインスタンスは Windows コンテナで実行できず、Windows コンテナインスタンスは Linux コンテナで実行できません。したがって、適切なタスク配置を達成するには、Windows コンテナインスタンスと Linux コンテナインスタンスを別々のクラスターで実行します。このチュートリアルでは、Windows コンテナ用の windows というクラスターを作成します。

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

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

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

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

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

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

  6. [Create an empty cluster]、[Create] の順に選択します。

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

  • 以下のコマンドを使用して AWS CLI でクラスターを作成することもできます。

    aws ecs create-cluster --cluster-name windows

ステップ 2: Windows コンテナインスタンスをクラスターで起動する

このトピックで説明しているように、AWS マネジメントコンソールを使用して Windows コンテナインスタンスを起動できます。開始する前に、必ず「Amazon ECS でのセットアップ」の手順を完了してください。インスタンスを起動したら、そのインスタンスを使用してタスクを実行できます。

Windows コンテナインスタンスを起動するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

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

  3. コンソールダッシュボードで、[Launch Instance] を選択します。

  4. [Choose an Amazon Machine Image (AMI) (Amazon マシンイメージ (AMI) の選択)] ページの [Search community AMIs (コミュニティ AMI の検索)] フィールドに、[ECS_Optimized] と入力し、[Enter] キーを押します。[Windows_Server-2016-English-Full-ECS_Optimized-2018.10.23] AMI の横にある [選択] を選択します。

    参考までに、現在のリージョン別の Amazon ECS-optimized Windows AMI ID を以下に示します。

    サービス対象 AMI ID
    us-east-2 ami-0aa2bc91e0ae61f20
    us-east-1 ami-01b701d1a348a0d00
    us-west-2 ami-0fded406f9181f23e
    us-west-1 ami-0fc5ce74467bede32
    eu-west-2 ami-0b424d1a14d65dc82
    eu-west-3 ami-029022cbb6ed8b0ff
    eu-west-1 ami-093e70c8eaf8bf855
    eu-central-1 ami-0cd14231d2781b2d4
    ap-northeast-2 ami-0718ed3169284fcb2
    ap-northeast-1 ami-03e8262ffcd3dc2ef
    ap-southeast-2 ami-09d2320e193d0a987
    ap-southeast-1 ami-041abe3853451bde6
    ca-central-1 ami-0ce95db503b24b9bb
    ap-south-1 ami-0d01ca46dc1c075ef
    sa-east-1 ami-09c3ab7eae7794ef9
    us-gov-west-1 ami-b27510d3
  5. [Choose an Instance Type] ページで、インスタンスのハードウェア構成を選択できます。デフォルトでは、t2.micro インスタンスタイプが選択されます。選択したインスタンスタイプによって、タスクの実行に使用できるリソースが決まります。

  6. [Next: Configure Instance Details] を選択します。

  7. [Configure Instance Details (インスタンスの詳細の設定)] ページで、インスタンスをパブリックインターネットからアクセス可能にするかどうかに応じて [Auto-assign Public IP (自動割り当てパブリック IP)] チェックボックスをオンまたはオフにします。インスタンスをインターネットからアクセス可能にする場合は、[自動割り当てパブリック IP] フィールドが [有効] に設定されていることを確認します。インスタンスをインターネットからアクセス不可にする場合は、[Disable] を選択します。

    注記

    コンテナインスタンスには、Amazon ECS サービスエンドポイントと通信するために外部ネットワークアクセスが必要なため、コンテナインスタンスにパブリック IP アドレスがない場合は、NAT (ネットワークアドレス変換) を使用してこのアクセスを提供する必要があります。詳細については、Amazon VPC ユーザーガイドの「NAT ゲートウェイおよびこのガイドの「HTTP プロキシ設定を参照してください。詳細については、「チュートリアル: クラスターのパブリックサブネットとプライベートサブネットを持つ VPC を作成する」を参照してください。

  8. [Configure Instance Details] ページで、IAM role] の値 に「Amazon ECS でのセットアップ」でコンテナインスタンス用に作成した ecsInstanceRoleを選択します。

    重要

    適切な IAM アクセス許可を使用してコンテナインスタンスを起動しないと、Amazon ECS エージェントはクラスターに接続されません。詳細については、「Amazon ECS コンテナインスタンス IAM ロール」を参照してください。

  9. [Advanced Details] セクションを展開し、提供されたユーザーデータの PowerShell スクリプトを [User data] フィールドに貼り付けます。デフォルトでは、このスクリプトによって、前に作成した windows クラスターにコンテナインスタンスが登録されます。windows 以外のクラスターで起動するには、以下のスクリプトで赤のテキストを、起動先のクラスターの名前に置き換えます。

    注記

    この -EnableTaskIAMRole オプションは、タスクの IAM ロールを有効にするために必要です。詳細については、「Windows タスク用の IAM ロール」を参照してください。

    <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole </powershell>
  10. [次の手順: ストレージの追加] を選択します。

  11. [Add Storage] ページで、コンテナインスタンスのストレージを設定します。Windows OS およびコンテナイメージはきわめて大きい (Windows サーバーのコアベースレイヤーは約 9 GiB) ため、Amazon ECS-optimized Windows AMI で使用するデフォルトの 50 GiB ボリュームサイズはいくつかのイメージやコンテナだけですぐに満杯になります。より大きなルートボリュームサイズ (200 GiB など) を使用することで、インスタンスのコンテナとイメージの数を増やすことができます。

    オプションで、アプリケーションのニーズに合わせてインスタンスのボリュームサイズを増減できます。

  12. [Review and Launch] を選択します。

  13. [Review Instance Launch] ページの [Security Groups] に、ウィザードで作成および選択したセキュリティグループが表示されます。デフォルトでは、RDP 接続用のポートは 3389 です。インターネットからのインバウンドトラフィックをコンテナで受信する場合は、そのためのポートも開きます。

    1. [Edit security groups] を選択します。

    2. [Configure Security Group] ページで、[Create a new security group] オプションが選択されていることを確認します。

    3. コンテナに必要と思われるその他のポートのルールを追加し、[確認と作成] を選択します。このウォークスルーの後半のサンプルのタスク定義ではポート 8080 を使用するため、それを [任意の場所] に対して開きます。

  14. [Review Instance Launch] ページで、[Launch] を選択します。

  15. [Select an existing key pair or create a new key pair] ダイアログボックスで、[Choose an existing key pair] を選択し、セットアップ時に作成したキーペアを選択します。

    準備ができたら、確認フィールドを選択してから、[Launch Instances] を選択します。

  16. インスタンスを起動することを知らせる確認ページが表示されます。[View Instances] を選択して確認ページを閉じ、コンソールに戻ります。

  17. [Instances] 画面でインスタンスのステータスを表示できます。インスタンスはすぐに起動します。インスタンスを起動した直後のステータスは pending です。インスタンスを起動した後は、状態が running に変わり、パブリック DNS 名を受け取ります([Public DNS] 列が非表示になっている場合は、[Show/Hide] アイコンを選択して [Public DNS] を選択します)。

  18. インスタンスが起動したら、Amazon ECS コンソールでクラスターを表示し、クラスターにコンテナインスタンスが登録されていることを確認します。

    注記

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

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

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

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

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

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

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

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

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

    { "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "microsoft/iis", "cpu": 512, "entryPoint":["powershell", "-Command"], "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"], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ], "memory": 1024, "essential": true } ] }
  6. 情報を確認し、[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

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

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

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

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

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

    • Cluster: windows

    • Number of tasks: 1

    • Service name: windows-simple-iis

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

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

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

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

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

注記

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

サービスを表示するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon 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 テストページ