Amazon EC2(Windows Server 2012)の カスタムAMI の作成

2016.04.29

カスタムAMI の作成はバックアップ目的以外に、本番環境で稼働中の EC2 インスタンス複製したい場合がありますが、Windowsの複製の場合はマシン SID に対する配慮が必要です。オリジナルのEC2インスタンスには手を加えずに EC2 インスタンスを複製する方法、注意点について解説します。

マシン SID とは何か

マシン SID(コンピューターのセキュリティ識別子) とは、Windowsのコンピューターに与えられる固有の識別情報で「S-1-」で始まる複数の数字の列で構成されます。実はユーザーやグループに対しても SID があり、whoamiコマンドによって取得したユーザー SID からマシン SIDを調べることができます。

winami-machine-sid

このマシン SID は、ドメインコントローラの識別や Windows Update などに利用されているので、Windowsはコンピューターごとにユニークなマシン SID が付与されていることが前提で設計されています。よって、AMIなどで複製した場合にマシン SID が重複しないように、複製したEC2インスタンスに新たなマシン SIDを設定する必要があります。一般にWindowsでは Sysprepというツールを用いることで新たなマシン SID を付与することができます。EC2インスタンスにおいては後述するEC2Confgツールを用いて、複製時に必要となる設定やSysprepの実行など一連の作業を行います。

全ての環境においてマシン SIDの重複で直ちに問題が顕在化するとは限りませんが、複製されたシステムが動作保障されるのは、Sysprepが実施されている場合に限られますので、EC2Confgツールを用いてSysprepを実行することをおすすめします。

参考:マシン SID の重複神話

カスタム AMI によるバックアップ

Linuxと同様にバックアップは普通にインスタンス名を右クリックして、[イメージ]-[イメージの作成]を選択してAMIを作成します。尚、「イメージの作成」ダイアログでは、「再起動しない」のチェックを付けず、インスタンスを停止させて静止点を作り、AMIを作成することをおすすめします。

winami-create-images

普通に作成したAMIからEC2インスタンスを起動して確認しますと、EC2のインスタンスIDは異なりますが、コンピュータ名、SIDは変更されていないことが確認できます。

つまり、バックアップ目的であれば普通にAMIを作成するのが正しい方法となります。

補足:今回はEC2インスタンスからAMIを作成しているの問題ありませんが、ルート ボリュームのスナップショットから作成した AMI からは Windows を 起動できないことをご注意ください。

カスタム AMI による複製

「マシン SID とは何か」で解説したとおり、複製が目的でAMIの作成するには、AMIを取得する前に EC2Config によって、複製用のイメージ作成の準備が必要となります。しかし、本番環境ですでに動いているEC2インスタンスに対してこの操作をしてしまうと、本番稼働中のEC2インスタンスのマシン SID等が初期化されてしまうので、前述の「カスタム AMI によるバックアップ」で作成したAMIから起動したEC2インスタンスに対して、EC2Config を実行し、カスタム AMIを作成します。複製用のカスタム AMI 作成は以下の手順となります。

  1. 本番環境EC2インスタンスのAMIを作成
  2. 本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動
  3. 複製用EC2インスタンスでEC2ConfigからSysprepを実行
  4. 複製用EC2インスタンスのAMIを作成
  5. 複製用EC2インスタンスのAMIを起動して複製

1.本番環境EC2インスタンスのAMIを作成

この手順は、前述の「カスタム AMI によるバックアップ」の通りです。

2.本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動

本番環境EC2インスタンスのAMIから複製用EC2インスタンスを起動します。コピー元の本番環境EC2インスタンスがドメインに参加している場合は、本番環境EC2インスタンスとは別のVPCなど、ネットワーク的に分離した環境で複製用EC2インスタンスを起動することをおすすめします。

3.複製用EC2インスタンスでEC2ConfigからSysprepを実行

EC2ConfigService Settings アプリを起動します。

winami-ec2config

アプリが起動すると、[Image]タブの「Administrator Password」で [Random] [Specify] [Keep Exsiting] のいずれかを選択し、[Shutdown with Sysprep]を押して実行します。今回は「Administrator Password」で [Random] を選択して実行しました。

winami-ec2config-setting

実行すると[Sysprep Confirmation]というダイアログが表示され、[はい(Y)]を押して続行すると、自動的に Sysprep が実行された後、数分後にShutdownします。

winami-ec2config-setting-executing

Administrator Password のオプション

Random

EC2Config はパスワードを生成してユーザーのキーで暗号化し、暗号化されたパスワードをコンソールに表示します。 この設定は初回起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。マネジメントコンソールからキーペアを指定することで新たなパスワードを参照できます。

Specify

任意のパスワードを指定することができます。パスワードは、Sysprep 応答ファイルに暗号化されていない形式(平文)で保存されます。 Sysprep が次に実行されると、管理者パスワードに設定されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。サービスを再開すると、管理者パスワードは削除されます。マネジメントコンソールからキーペアを指定してパスワードを参照することができませんのでご注意ください。

Keep Exsiting

既存の管理者アカウントのパスワードが変更されません。 マネジメントコンソールからキーペアを指定してパスワードを参照することができませんのでご注意ください。

4.複製用EC2インスタンスのAMIを作成

複製用EC2インスタンスが停止していることを確認した上で、AMIを作成します。これで目的のAMIの作成が完了しました。

5.複製用EC2インスタンスのAMIを起動して複製

複製用EC2インスタンスのAMIを起動して確認します。コンピュータ名、マシン SIDが変更されていることが確認できます。

winami-clone

カスタム AMI による複製の注意点

Sysprepは、イメージに固有の情報と設定を削除します。 Sysprep は、たとえばセキュリティ識別子(SID)、コンピュータ名、イベントログおよび特定のドライバーなどを削除(システムはドライバーの削除を除く)します。なので以下の項目については、コンピュータ名とタイムゾーンついては再設定してください。

  • SID(マシン SIDを含む)が新たに設定されます
  • ランダムなコンピュータ名が新たに設定されます
  • タイムゾーンはデフォルトで世界時(UTC)に設定されます

Sysprep ステップ [一般化] [特定化] [アウトオブボックスエクスペリエンス (OOBE)]の詳細については  Sysprep を使って標準の Amazon マシンイメージを作成します を御覧ください。

まとめ

Amazon EC2(Windows Server 2012)の カスタムAMI の作成は、

  • バックアップは普通にAMIを作成する
  • 複製するAMIの作成はEC2ConfigツールからSysprepを実行して複製イメージを作成する

本番稼働中のWindows Server にSysprepを実行するなどないようにご注意ください。