

# EC2Launch で Windows Sysprep を使って AMI を作成する
<a name="ec2launch-sysprep"></a>

EC2Launch エージェントがインストールされたインスタンスからイメージを作成すると、EC2Launch はイメージが作成されたときに特定のタスクを実行します。これには Windows Sysprep を使用した作業が含まれます。詳細については、「[Windows Sysprep のステップ](ami-create-win-sysprep.md#sysprep-phases)」を参照してください。

EC2Launch は、AMI でイメージ準備プロセスを自動化および保護する Windows Sysprep 用のデフォルトの応答ファイルとバッチファイルを提供します。これらのファイルの変更はオプションです。デフォルトでは、これらのファイルは `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` ディレクトリにあります。

**重要**  
Windows Sysprep を使用してインスタンスのバックアップを作成しないでください。Windows Sysprep はシステム固有の情報を削除します。この情報を削除すると、インスタンスバックアップで意図しない結果が生じる可能性があります。

**Topics**
+ [Windows Sysprep の EC2Launch 応答ファイルとバッチファイル](#ec2launch-sysprep-answer-batch)
+ [EC2Launch で Windows Sysprep を実行する](#ec2launch-sysprep-running)
+ [カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新する](#update-metadata-KMS)

## Windows Sysprep の EC2Launch 応答ファイルとバッチファイル
<a name="ec2launch-sysprep-answer-batch"></a>

Windows Sysprep の EC2Launch 応答ファイルとバッチファイルには以下のものが含まれます。

`Unattend.xml`  
これがデフォルトの応答ファイルです。`SysprepInstance.ps1` を実行するか、ユーザーインターフェイスで **ShutdownWithSysprep** を選択すると、このファイルから設定が読み取られます。

`BeforeSysprep.cmd`  
このバッチファイルをカスタマイズし、EC2Launch が Windows Sysprep を実行する前にコマンドを実行します。

`SysprepSpecialize.cmd`  
このバッチファイルをカスタマイズして、Windows Sysprep の特定化ステップ中にコマンドを実行します。

## EC2Launch で Windows Sysprep を実行する
<a name="ec2launch-sysprep-running"></a>

Windows Server 2016 以降の完全インストール (デスクトップ体験を含む) では、EC2Launch を使用して手動で、または **[EC2 起動設定]** アプリケーションを使用して、Windows Sysprep を実行できます。

**[EC2 起動設定] アプリケーションを使用して Windows Sysprep を実行するには**

1. Amazon EC2 コンソールで、Windows Server 2016 以降の AMI を見つけるか作成します。

1. AMI から Windows インスタンスを起動します。

1. Windows インスタンスに接続し、カスタマイズします。

1. [**EC2LaunchSettings**] アプリケーションを検索して実行します。このアプリケーションは、デフォルトでは `C:\ProgramData\Amazon\EC2-Windows\Launch\Settings` ディレクトリにあります。  
![\[EC2 Launch Settings アプリケーション\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ec2launch-sysprep.png)

1. 必要に応じて、オプションを選択または選択解除します。これらの設定は `LaunchConfig.json` ファイルに保存されます。

1. [**Administrator Password**] で、以下のいずれかを行います。
   + [**Random**] を選択します。EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
   + [**Specify**] を選択し、システム要件を満たすパスワードを入力します。このパスワードはクリアテキストとして `LaunchConfig.json` に保存され、Windows Sysprep で管理者パスワードが設定されると削除されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。
   + [**DoNothing**] を選択して、`unattend.xml` ファイルでパスワードを指定します。`unattend.xml` でパスワードを指定しない場合、管理者アカウントは無効になります。

1. [**Shutdown with Sysprep (Sysprep を使用してシャットダウン)**] を選択します。

**EC2Launch を使用して手動で Windows Sysprep を実行するには**

1. Amazon EC2 コンソールで、複製する Windows Server 2016 以降の Datacenter エディション AMI を見つけるか作成します。

1. Windows インスタンスを起動して接続します。

1. インスタンスをカスタマイズします。

1. `LaunchConfig.json` ファイルで設定を指定します。デフォルトでは、このファイルは `C:\ProgramData\Amazon\EC2-Windows\Launch\Config` ディレクトリにあります。

   `adminPasswordType` で、次のいずれかの値を指定します。  
`Random`  
EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。  
`Specify`  
EC2Launch は、`adminPassword` で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとして `LaunchConfig.json` に保存され、Windows Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。  
`DoNothing`  
EC2Launch は、`unattend.xml` ファイルで指定したパスワードを使用します。`unattend.xml` でパスワードを指定しない場合、管理者アカウントは無効になります。

1. (オプション) 必要に応じて、`unattend.xml` およびその他の設定ファイルで設定を指定します。手動のインストールを計画している場合は、これらのファイルに変更を加える必要はありません。デフォルトでは、このファイルは `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` ディレクトリにあります。

1. Windows PowerShell で、`./InitializeInstance.ps1 -Schedule` を実行します。デフォルトでは、このスクリプトは `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` ディレクトリにあります。このスクリプトは、次の起動中に初期化するようインスタンスをスケジュールします。次のステップで `SysprepInstance.ps1` スクリプトを実行する前に、このスクリプトを実行する必要があります。

1. Windows PowerShell で、`./SysprepInstance.ps1` を実行します。デフォルトでは、このスクリプトは `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` ディレクトリにあります。

ユーザーは自動的にログオフさせられ、インスタンスがシャットダウンします。Amazon EC2 コンソールの [**Instances (インスタンス)**] ページを見ると、インスタンスの状態が `Running` から `Stopping` に、そして `Stopped` へ変わるのがわかります。この状態になれば、インスタンスから AMI を安全に作成できます。

## カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新する
<a name="update-metadata-KMS"></a>

カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新するには、以下のいずれかの操作を行います。
+ EC2LaunchSettings GUI (C:\$1ProgramData\$1Amazon\$1EC2-Windows\$1Launch\$1Settings\$1Ec2LaunchSettings.exe) を実行し、Windows Sysprep を使用してシャットダウンするオプションを選択します。
+ AMI を作成する前に、EC2LaunchSettings を実行し、Windows Sysprep を使用しないでシャットダウンします。これにより、次回の起動時に実行される EC2 Launch の初期化タスクが設定され、インスタンスのサブネットに基づいてルートが設定されます。
+ [PowerShell](ec2launch-config.md#ec2launch-inittasks) から AMI を作成する前に、EC2 Launch の初期化タスクを手動で再スケジュールします。
**重要**  
タスクを再スケジューリングする前に、デフォルトではパスワードリセット動作となることに注意してください。
+ Windows のライセンス認証またはインスタンスメタデータの通信に関するエラーが発生している実行中のインスタンスのルートを更新するには、「[Windows のライセンス認証を行うことができません](common-messages.md#activate-windows)」を参照してください。