環境
- Amazon Elastic Container Service (Amazon ECS)
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
- Amazon ECS-optimized Windows Server 2019 Full AMI
- Amazon ECS-optimized Windows Server 2019 Core AMI
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
参考情報
- Amazon Elastic Container Service (Amazon ECS)
- AWS Documentation > Containers > Amazon ECS > Developer Guide
- What is the Server Core installation option in Windows Server? | Microsoft Docs
Windowsコンテナを動かす
Step 1: Create a Windows cluster
クラスターとはタスクまたはサービスの論理グループのこと。Linux用を共用することができないのでWindowsコンテナ用に専用のクラスターを作成する。
1-1. Amazon ECSコンソールを開く。
1-2. 左側のクラスターメニューからクラスター画面を開く。
1-3. クラスター画面で『クラスターの作成』ボタンを押す。

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

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

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

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

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

ecsInstanceRoleがある場合の表示

1-5-4. Tags

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

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

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

Step 2: Register a Windows task definition
クラスターでWindowsコンテナを動かす前にタスク定義を登録する必要がある。ここではIISのコンテナイメージを使ってポート8080で簡単なWebページを表示する。
2-1. Amazon ECSコンソールの左側メニュー > タスク定義を開く。『新しいタスク定義の作成』ボタンを押す。

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

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

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

Step 3: Create a service with your task definition
ここではタスク定義からサービスを作成してクラスターにタスクを置く。
3-1. タスク定義 > アクションドロップダウン > サービスの作成

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


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


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

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

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

サービスがクラスター内でタスクを起動したあとで、IISのテストページを確認することができる。コンテナのベースレイヤーのダウンロードと展開に15分程度掛かるので待つ必要がある。
4-1. Amazon ECSコンソールの左側のメニュー > クラスター > windows

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

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

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

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

参考情報
- AWS Documentation > Containers > Amazon ECS > Developer Guide > Getting started > Getting started with Windows containers