【EC2】Sysprep時にデータドライブのドライブレターを指定する【Windows】

AWS運用自動化サービス「Cloud Automator」

こんにちは。技術二課の伊藤Kです。

Sysprepについて、こんな記事を書きました。
【EC2】Sysprepの手順【Windows】

上記手順に沿ってSysprepを実施したところ、OSのドライブレターが、
Sysprep前は「システム:C、データ:G」だったのに・・・

Sysprep後に「システム:C、データ:D」になってしまいました・・・。

もともと「システム:C、データ:D」のときは変化なし、「システム:C、データ:E、データ:G」のとき「システム:C、データ:D、データ:E」になってしまうので、データドライブがDから順番に並べなおされるように見えます。

今日は、データドライブのSysprep前のドライブレターを維持する方法についてです。

はじめに

前提として、まずこの現象はバグではなく仕様です。

EC2Configの場合

EC2Config サービスを使用した Windows インスタンスの設定

システムは、インスタンスにアタッチされたボリュームにドライブ文字をマッピングします。Amazon EBS ボリュームの場合、デフォルトでは D: から Z: のドライブ文字が割り当てられます。

EC2Launchの場合

EC2Launch を使用した Windows インスタンスの設定
こちらは明示的な記述はありませんが、動きはEC2Configと同じです。

ドライブ文字のマッピング

冒頭に「Sysprep前のドライブレターを維持する方法」と書きましたが、イメージとしては「維持する」というよりも、「指定する」となります。Sysprep前と同一のレターの指定も可能です。

EC2Configの場合

まず、ドライブ文字を割り当てたいドライブには、あらかじめOSの設定より「ボリュームラベル」を設定しておきます。
ここでは、Hドライブに「FILES」のボリュームラベルを設定しました。

EC2Configを用いたSysprepの手順内で、プログラム一覧よりEC2Configを開いた後に「Storage」タブを選択し、
「Drive Letter Mappings」のペインより [Mappings] をクリックします。

「Volume Name」に設定した「ボリュームラベル」の値を入力し、「Drive Letter」に指定するドライブレターを入力します。
維持するなら「Hドライブ」でよいのですが、ここでは「Gドライブ」に変更してみます。
[OK] をクリックします。

その後は通常のSysprepと同様に [Shutdown with sysprep] をクリックしてSysprepします。

Sysprepが完了してシャットダウン状態となったインスタンスよりイメージ(AMI)を作成し、作成したイメージよりインスタンスを起動すると、指定したボリュームラベルのドライブに、指定したドライブレターが付与されています。

EC2Launchの場合

※ 記事作ってから気づきました。OSの「ディスクの管理」からドライブ文字を普通に振りなおせばよくないか、と。
以下は参考情報として載せておきます。

EC2Launchには、「Drive Letter Mappings」の項目がありません。
EC2Configの場合と同様に、ドライブ文字を割り当てたいドライブには、あらかじめOSの設定より「ボリュームラベル」を設定しておきます。

さらに、「C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json」をメモ帳等で開き、以下の通り記載します。

その後は通常のSysprepと同様に [Shutdown with sysprep] をクリックしてSysprepします。

Sysprepが完了してシャットダウン状態となったインスタンスよりイメージ(AMI)を作成し、作成したイメージよりインスタンスを起動すると、今度はDドライブになってしまいます。

ここで、以下パスのPowerShellスクリプトを実行します。
 C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1

すると、ドライブレターが上記「DriveLetterMappingConfig.json」で指定した文字に変更されます。

参考情報

EC2Launchでドライブ文字をボリュームにマッピングする

AWS運用自動化サービス「Cloud Automator」