AWS Launch Wizard で IIS for Windows Server テンプレートが提供されるようになりました

2022.05.29

いわさです。

少し前に、AWS Launch Wizardでいくつかテンプレートが追加されました。
その中のひとつ、Internet Information Services(IIS)のテンプレートを使ってみました。

AWS Launch Wizard

AWS Launch Wizardは、AWS Well-Architected Frameworkに従って事前に様々なベストプラクティスを考慮した形でワークロードを構築することができるデプロイテンプレートです。
Launch Wizardで実際にデプロイされるワークロードは事前にAWSによって用意されているCloudFormationスタックが実体です。

本日時点で以下のテンプレートが提供されています。

  • AWS Launch Wizard for SQL Server
  • AWS Launch Wizard for SAP
  • AWS Launch Wizard for Active Directory
  • AWS Launch Wizard for Remote Desktop Gateway
  • AWS Launch Wizard for Amazon Elastic Kubernetes Service
  • AWS Launch Wizard for Exchange Server
  • AWS Launch Wizard for Internet Information Services

AWS Launch Wizard for IIS のコンポーネント

Launch Wizard for IISは以下の構成で構築されます。
複数アベイラビリティゾーンでワークロードは構成され、パブリックサブネットからRemote Desktop Gatewayを使ってインスタンスへのリモートアクセスを提供しています。

IISインスタンスはオートスケーリンググループで構成されており、ディレクトリにManaged Microsoft ADを使用する構成となっています。

What Is AWS Launch Wizard for Internet Information Services? - AWS Launch Wizard より

Launch Wizard 構成

本来はIISの設定を変更してカスタム.NETアプリケーションをデプロイしたりしたかったのですが、デプロイになかなか時間がかかったのでそこまでたどり着けませんでした。
この記事では基本的な構成で初期デプロイまでを行ってみます。

ワークロードの名前と、オプションでSNSトピックを指定します。
SNSトピックはAWS Launch Wizardが通知やアラートを送信する際に利用されます。

デプロイ先は既存VPCと新規VPCが選択出来ます。
この記事では新規VPCへのデプロイで進めたいと思います。
なお、既存VPCへデプロイする際には事前にADを構成しておく必要があります。

新規でVPC作成から設定する場合は以下の情報を入力していきます。
構成としてはマルチAZでELBとECS(IIS)の、それぞれパブリックサブネットとプライベートサブネットが作成されます。
ADもプライベートサブネットにデプロイされます。プライベートサブネット内のインスタンスはNATゲートウェイを通ってインターネットへのアウトバウンドができるようになっています。

Active Directoryは AWS Directory Service for Microsoft AD か、Microsoft AD on Amazon EC2 を選択出来ます。 今回は AWS Directory Service for Microsoft AD を選択しました。ただし、Standard Editionは選択できず、Enterprise Editionのみとなります。料金は以下です。
マルチAZなので、2つのドメインコントローラーがデプロイされます。

IIS用のHTMLファイルが配置されているS3バケット情報を指定します。
事前にWebサイトが用意出来ている場合はS3バケットにアップロードして指定します。

ここではまだ準備が出来ていなかったので空白にしています。その場合はサンプルページが表示されるようになります。

次に、オートスケーリングの構成を行います。
Launch Wizard for IISでデプロイされるワークロードはオートスケーリング構成です。
ここでは台数やCIDRの設定などを行いますが、イベントやスケジューリングなどのオートスケーリングの動作設定は自分であとから設定する必要があります。

最後に、IISやRD Gatewayインスタンスのインスタンスサイズを指定します。
性能情報からインスタンスファミリーやサイズを算出(Infrastructure suggestion)してくれますが、自分で指定(Static values)することも出来ます。

自動設定の場合は最小がm5.xlargeでした。
今回は検証でt系を利用したかったので手動指定しました。

デプロイ

設定項目多かったですが、ここまででようやくデプロイが開始されます。
上部のステータス表示には最大2時間かかるの表示が。
デプロイの詳細ページからプロビジョニングのフェーズごとのステータスが確認出来ます。

デプロイ後、IISのウェブサイトへアクセスしてみます。

デフォルトページっぽいものが表示されました。
もし接続出来ない場合、デプロイ構成の中でWebAccessCIDRパラメータを指定したと思いますが、こちらがアクセスを許可するIPアドレスの範囲となっています。
まずはアクセス元のパブリックIPアドレスがCIDRの範囲かご確認ください。

オートスケーリング構成を行っているのでそのあたりの挙動やアプリケーションの検証も出来ればと思っていましたが、今回は動的なWebアプリケーションは使用していないので割愛します。

リモートアクセスの方法

インスタンスへのリモートアクセス方法ですが、RD GatewayかSSMポートフォワードでIISインスタンスへリモート接続を行う形になります。
ただし、認証情報が不明だと思います。

実は、デプロイされたリソース内に Secrets Manager が含まれていて、そちらからリモート接続するためのユーザー名とパスワードが取得することが出来ます。

Launch Wizardでの管理

Launch Wizardコンソールでは Microsoft IIS ワークロード としてグループが表示されます。
ワークロードを選択し、EC2コンソール・リソースグループ・CloudFormationスタックへアクセスが出来ます。

EC2コンソール

EC2コンソールではこのLaunch WizardでデプロイされたEC2にフィルタリングした状態でコンソールへすぐに遷移することが出来ます。

リソースグループ

デプロイされたリソース一式はリソースグループで管理されています。

CloudFormationスタック

リソースは、Launch Wizardで用意されたテンプレートで作成されています。
デプロイされるリソース数が多いので、詳細なデプロイ設定を確認したり設定を変更したい場合はスタックパラメータやテンプレートを直接確認したほうが速い場合もあります。

削除

リソース一式を削除したい場合は、Launch Wizardコンソールからまとめて削除することができます。今回は検証のために何度か利用しましたが、リソース数が多いので地味に便利な機能でした。

さいごに

本日は、AWS Launch Wizard for IISを使ってデプロイまでしてみました。

本来はこのあとにIISに追加の機能(例えばASP.NETなど)をインストールしたりするのですが、次回以降にそのあたりの変更をしてみたいと思います。
また、テンプレートとSSM Runbookを解析し内部的にどのような動きでデプロイしているのかも把握しておきたいと思います。

Launch Wizard for IIS で触れられている、Microsoft IISワークロードでのベストプラクティスについては以下を参考にしてください。