Amazon ECSでチュートリアルのWindowsコンテナを動かす

2020年12月10日(木)

環境

Windowsコンテナの概要

1. Amazon ECSはAmazon ECS向けに最適化されたWindows ServerのAmazon Machine Image (AMI)で起動されたコンテナインスタンス上のWindowsコンテナをサポートしている。

AWS > Documentation > Amazon ECS > Developer Guide > Windows containers

Amazon ECS now supports Windows containers on container instances that are launched with the Amazon ECS-optimized Windows Server AMI.

2. Amazon ECSではWindowsコンテナ用に2つのAmazon AMIを推奨している。

AWS > Documentation > Amazon ECS > Developer Guide > Windows containers

3. WindowsコンテナはEC2起動タイプのみサポートしている。Fargate起動タイプはサポートしていない。

AWS > Documentation > Amazon ECS > Developer Guide > Windows containers > Windows container caveats

4. WindowsコンテナはLinuxコンテナで使えるタスク定義の一部のみサポートしている。

AWS > Documentation > Amazon ECS > Developer Guide > Windows containers > Windows container caveats

参考情報

Windowsコンテナを動かす

Step 1: Create a Windows cluster

クラスターとはタスクまたはサービスの論理グループのこと。Linux用を共用することができないのでWindowsコンテナ用に専用のクラスターを作成する。

1-1. Amazon ECSコンソールを開く。

1-2. 左側のクラスターメニューからクラスター画面を開く。

1-3. クラスター画面で『クラスターの作成』ボタンを押す。

Amazon ECS > クラスター > クラスターの作成

1-4. クラスターの作成 > ステップ1:クラスターテンプレートの選択。『EC2 Windows + ネットワーキング』を選択して『次のステップ』ボタンを押す。

クラスターの作成 > ステップ1:クラスターテンプレートの選択

1-5. クラスターの作成 > ステップ2:クラスターの設定。クラスター名を入力して『作成』ボタンを押す。

クラスターの作成 > ステップ2:クラスターの設定

1-5-1. インスタンスの設定。プロビジョニングモデル。アプリケーションが中断に対応していない場合はオンデマンドインスタンスを選択する。EC2インスタンスタイプは英語版のドキュメントに記載がある。

クラスターの作成 > ステップ2:クラスターの設定 > インスタンスの設定

1-5-2. ネットワーキング

クラスターの作成 > ステップ2:クラスターの設定 > ネットワーキング

1-5-3. コンテナインスタンスIAMロール。ecsInstanceRoleがない場合は自動的に作成される。

ecsInstanceRoleがない場合の表示

クラスターの作成 > ステップ2:クラスターの設定 > コンテナインスタンスIAMロール

ecsInstanceRoleがある場合の表示

クラスターの作成 > ステップ2:クラスターの設定 > コンテナインスタンスIAMロール

1-5-4. Tags

クラスターの作成 > ステップ2:クラスターの設定 > Tags

1-5-5. CloudWatch Container Insights。これは追加料金の掛かるもの。無料版が提供されている。

クラスターの作成 > ステップ2:クラスターの設定 > CloudWatch Container Insights

1-6. クラスターの作成が行われる。

起動ステータス

1-7. 『クラスターの表示』ボタンを押してAmazon ECSコンソールを開く。

Amazon ECS > クラスター > windows

Step 2: Register a Windows task definition

クラスターでWindowsコンテナを動かす前にタスク定義を登録する必要がある。ここではIISのコンテナイメージを使ってポート8080で簡単なWebページを表示する。

2-1. Amazon ECSコンソールの左側メニュー > タスク定義を開く。『新しいタスク定義の作成』ボタンを押す。

Amazon ECS > タスク定義

2-2. 新しいタスク定義の作成。ステップ1:起動タイプの互換性の選択。起動タイプは『EC2』を選択する。『Fargate』はWindowsコンテナと互換性がない。『次のステップ』ボタンを押す。

Amazon ECS > タスク定義 > 新しいタスク定義の作成 > 起動タイプの互換性の選択

2-3. 新しいタスク定義の作成。ステップ2:タスクとコンテナ定義の設定。ページの下部に『JSONによる設定』ボタンがある。ボタンを押して右側からスライドしてきたウインドウにサンプルのJSON文字列を貼り付けて保存する。ページ下部にある『作成』ボタンを押す。

Amazon ECS > タスク定義 > 新しいタスク定義の作成 > 起動タイプの互換性の選択 > JSONによる設定

2-4. タスク定義が正常に作成されました。

Amazon ECS > タスク定義 > 新しいタスク定義の作成 > 起動タイプの互換性の選択 > 作成

Step 3: Create a service with your task definition

ここではタスク定義からサービスを作成してクラスターにタスクを置く。

3-1. タスク定義 > アクションドロップダウン > サービスの作成

Amazon ECS > タスク定義 > サービスの作成

3-2. サービスの作成。ステップ1:サービスの設定。起動タイプは『EC2』を選択する。サービス名は『windows-simple-iis』を入力する。タスクの数は『1』を入力する。

Amazon ECS > タスク定義 > サービスの作成 > サービスの設定
Amazon ECS > タスク定義 > サービスの作成 > サービスの設定

3-3. サービスの作成。ステップ2:ネットワーク構成。変更なし。

Amazon ECS > タスク定義 > サービスの作成 > ネットワーク構成
Amazon ECS > タスク定義 > サービスの作成 > ネットワーク構成

3-4. サービスの作成。ステップ3:Auto Scaling (オプション)。変更なし。

Amazon ECS > タスク定義 > サービスの作成 > Auto Scaling (オプション)

3-5. サービスの作成。ステップ4:確認。『サービスの作成』ボタンを押す。

Amazon ECS > タスク定義 > サービスの作成 > 確認

3-6. サービスが作成される。

Amazon ECS > タスク定義 > サービスの作成 > 作成

Step 4: View your service

サービスがクラスター内でタスクを起動したあとで、IISのテストページを確認することができる。コンテナのベースレイヤーのダウンロードと展開に15分程度掛かるので待つ必要がある。

4-1. Amazon ECSコンソールの左側のメニュー > クラスター > windows

Amazon ECS > クラスター

4-2. クラスター:windows > サービスタブ > サービス名 > windows-simple-iis

Amazon ECS > クラスター > windows

4-3. サービス:windows-simple-iis > タスクタブ > タスク > ID

Amazon ECS > クラスター > windows > サービス:windows-simple-iis

4-4. タスク:ID > 詳細タブ > コンテナ > windows_sample_appを展開。外部リンクをクリックするとIISのテストページが表示される。

Amazon ECS > クラスター > windows > サービス:windows-simple-iis > タスク:ID

4-5. IISのテストページ

Amazon ECS > クラスター > windows > サービス:windows-simple-iis > タスク:ID > 外部リンク

参考情報