AWSでWindowsのAMIを作成して再利用できるようにしました。
作成手順は以下の通りです。
- WindowsのAMIイメージからインスタンスを作成する。
- 必要な設定、追加アプリをインストールする。
- EC2ConfigServiceを使って固有情報を削除する。
- 固有情報を削除して停止したマシンイメージからAMIイメージを作成する。
- 作成したAMIからインスタンスを作成する。
Linuxと異なるのは、「EC2ConfigServiceを使って固有情報を削除する。」です。
また、「作成したAMIからインスタンスを作成する。」は、LinuxのAMIより起動に時間がかかるようです。ステータスが完了しても、しばらくの間リモートデスクトップで接続できないため、作成に成功したAMIを何度も作り直して時間を無駄にしました。
WindowsのAMIイメージからインスタンスを作成する。
EC2のインスタンス作成でWindowsのAMIを選択します。
今回は、下記のWindows 2012 R2のイメージを使いました。
サイズやネットワークは、使うアプリケーションが動くなるべく小さいサイズが良いでしょう。今回は、無料枠で使えるt2.microを使いました。
インスタンスタイプの選択、インスタンスの設定、ストレージの追加、インスタンスのタグ付けは、デフォルトで設定しました。使うソフトウェアに応じて適切に設定して下さい。
セキュリティグループの設定は、デフォルトでリモートデスクトッププロトコルのインバウンドが設定されています。
送信元にマイIPを設定します。
EC2のインスタンスは、インターネットからアクセスできるため、作成するOSによらず、この設定をお勧めします。
必要な設定、追加アプリをインストールする。
ここは、ニーズに応じて適宜必要なものをインストールしてください。
例えば、
- 日本語の設定
- Windows Updateの設定
- ユーザ登録
- 環境変数の設定
とか…
EC2ConfigServiceを使って固有情報を削除する。
この手順が本題となります。
AWSの「EC2Config サービスを使用した Windows インスタンスの設定」を参考にしました。
AWSのWindows AMIで、Startメニューで”EC2″を検索すると「EC2Configuration Service」が見つかるので起動します。
Generalタブで、「Event Log」をチェックします。WindowsのイベントログがEC2インスタンスのシステムログから参照することができるようになります。
Storageタブで「Root Volume」をチェックします。EC2インスタンスを作成した際にルートボリュームのサイズを変更した際に動的に認識してくれるらしいです。
Imageタブで「Administrator Password」を選択します。Randomは、毎回動的に割り当てられてAWSコンソールから秘密鍵で参照するおなじみの方式でオススメです。その他のオプションは、指定のパスワードを使うと、インスタンスの元のパスワードほ保持するですが、再入力による確認がなく忘れてしまったらそれまでです。
あとは、「Shutdown with Sysprep」ボタンを押します。
下記の確認ダイアログが出るので「Yes」ボタンを押します。
sysprepが実行されます。しばらく時間がかかりEC2インスタンスが停止します。
固有情報を削除して停止したマシンイメージからAMIイメージを作成する。
sysprepでSIDやライセンスなどマシン固有の情報が削除されインスタンスが停止します。
AWSコンソールで停止したインスタンスを選択し下記のメニューでイメージを作成します。
作成したAMIからインスタンスを作成する。
作成したAMIからインスタンスを作成します。
LinuxのAMIより時間がかかる気がします。
ステータスは、runningになりステータスチェックも完了している風ですが、ログを見るとしばらく作業が続きます。
下記は、作成から4分後のスクリーンショットですが、まだ、ターミナルサーバで接続するとエラーとなるので、失敗と勘違いして何度かやり直しましたがじっと我慢です。
だいたい10分くらい経つとEC2Configが完了しますが、まだ、処理は続きます。
ログにWindows is Ready to useが表示されたら作成完了です。
約13分かかりました。
インスタンスタイプを大きくすればもう少し早いかもしれません。
あとは、普通にAWSコンソールからパスワードを取得してターミナルサーバで接続します。
以上