しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Elastic Beanstalk で Windows Server 2012 R2 を使う時の基本的な環境情報を調べた

まずは実行環境としての基本的な状態を知っておきたいので、リモートデスクトップで接続して気になる部分だけ確認しました。最初に書いておきますが、当然ながら英語 OS で UTC という設定です。

タイムゾーンに関しては ebextensions を使えば変更できるので、変えるのもありかも知れません。

リモートデスクトップ接続できるようにする

Elastic Beanstalk によって作成された EC2 インスタンスには、キーペアを設定しておくとリモートデスクトップで接続できるようになります。

まずは EC2 キーペアを作成しておきます。名前を入れると pem が落ちてくるので大事に保管します。

f:id:shiba-yan:20161103203108p:plain

そして Elastic Beanstalk の作成画面や、設定からキーペアを指定する項目があるので、作成したキーペア名を選択して保存しておきます。これでインスタンスに設定が反映されます。

f:id:shiba-yan:20161103203411p:plain

実際に EC2 インスタンスに接続するためには、Elastic Beanstalk のダッシュボードではなく EC2 のダッシュボードから行う形になります。

接続したい EC2 インスタンスを右クリックするとメニューが出てきます。

f:id:shiba-yan:20161103204512p:plain

表示されるダイアログに全て書いてありますが、デフォルトのセキュリティグループでは RDP のポートが開いてないので、後でルールを追加する必要があります。

RDP のファイルをダウンロードして、パスワードを先ほどダウンロードした pem を使って入手するだけなので簡単ですね。忘れないように保存しておきましょう。

f:id:shiba-yan:20161103204606p:plain

最後にセキュリティグループのインバウンドルールに RDP を追加して終わりになります。

f:id:shiba-yan:20161103204739p:plain

これで保存すると EC2 インスタンスにリモートデスクトップ接続が出来るようになります。使い道は主に開発中とかだと思いますが、少し情報が少ないと感じたので書いておきました。

インストール済み機能

デフォルトでは ASP.NET と ASP.NET Core を動かすために必要な、最低限のコンポーネントのみインストールされています。URL Rewrite 2.0 は入っているので、一般的なアプリであれば問題はないでしょう。

f:id:shiba-yan:20161103205948p:plain

別途、必要なコンポーネントがある場合は ebextensions を使ってインストールする必要があります。

Web PI のコマンド版を使えば簡単にインストール出来ますが、ebextensions の実行ユーザーが SYSTEM になるので少しインストールするには工夫しないといけないです。これはどっかに書きたいです。

f:id:shiba-yan:20161103222237p:plain

インストールされている IIS の機能も、基本的にはデフォルトのままなので Application Initialization や WebSocket が必要な場合は dism を ebextensions から実行します。

デプロイ出来るパッケージ

Elastic Beanstalk 上の Windows Server にデプロイが可能なパッケージは MSDeploy 形式のパッケージと、AWS マニフェスト JSON が含まれているパッケージのみです。

これを忘れて適当な zip をデプロイしようとすると絶対に失敗するので注意したいですね。

f:id:shiba-yan:20161104004803p:plain

デプロイ時のログは cfn ディレクトリの中に書き出されるようになっています。名前からわかるように AWS CloudFormation を使って色々と実現をしているようです。

ログ周りは他に比べて貧弱

Windows Server の場合はダッシュボードから見れるログは少なく、標準では IIS ログなどはダウンロード出来ないみたいでした。なので、別途ログを転送する処理が必要になるかと思ってます。

AWS 的には CloudWatch Logs を ebextensions で有効にして転送するのがいいのかもしれませんが。*1

ebextensions は Modern Startup Task

これまで何回も書いてきた ebextensions ですが、書いてみればみるほど Azure Cloud Services の Startup Task と殆ど同じだと思いました。

設定ファイル(.ebextensions)による高度な環境のカスタマイズ - AWS Elastic Beanstalk
Windows Server でのソフトウェアのカスタマイズ - AWS Elastic Beanstalk

YAML でかけたり、MSI インストール用機能があったり、本家より使いやすいですね。実行ユーザーが SYSTEM になっている点だけは本当に注意したい部分だと思いました。

やっぱり例によってデバッグは結構コツが必要になる感じです。

*1:出来るのかどうかは試していない