

# Windows Sysprep を使用して Amazon EC2 AMI を作成する
<a name="ami-create-win-sysprep"></a>

Microsoft システム準備 (Windows Sysprep) ツールは、新しいイメージをキャプチャする前にインスタンス固有のシステム設定を削除して、オペレーティングシステムの一般化バージョンを作成します。

[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) を使用して、ソフトウェアと設定が事前にインストール、定義、カスタマイズされたセキュアな最新の「ゴールデン」サーバーイメージの作成、管理、デプロイを自動化することをお勧めします。

Windows Sysprep で、Windows 起動エージェント (EC2Launch v2、EC2Launch、EC2Config) を使って標準化された AMI を作成することもできます。

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

Windows Sysprep のトラブルシューティングについては、「[Amazon EC2 Windows インスタンスの Sysprep の問題をトラブルシューティングする](sysprep-troubleshoot.md)」を参照してください。

**Topics**
+ [Windows Sysprep のステップ](#sysprep-phases)
+ [[開始する前に]](#sysprep-begin)
+ [EC2Launch v2 で Windows Sysprep を使用する](sysprep-using-ec2launchv2.md)
+ [EC2Launch で Windows Sysprep を使用する](ec2launch-sysprep.md)
+ [EC2Config で Windows Sysprep を使用する](sysprep-using.md)

## Windows Sysprep のステップ
<a name="sysprep-phases"></a>

Windows Sysprep は、次のステップを通じて実行されます。
+ **一般化**: Sysprep ツールはイメージに固有の情報と設定を削除します。Windows Sysprep は、例えばセキュリティ識別子 (SID)、コンピュータ名、イベントログおよび特定のドライバーなどを削除します。このステップを完了すると、オペレーティングシステム (OS) は AMI を作成する準備が整いました。
**注記**  
Windows 起動エージェントで Windows Sysprep を実行すると、`PersistAllDeviceInstalls` はデフォルトで true に設定されているため、システムによってドライバーの削除が禁止されます。
+ **特定化**: プラグアンドプレイはコンピュータをスキャンして、検出されたデバイス用のドライバをインストールします。Sysprep ツールは、コンピュータ名や SID など OS に固有の要件を生成します。必要に応じて、このフェーズでコマンドを実行できます。
+ **アウトオブボックスエクスペリエンス (OOBE)**: システムによって Windows セットアップの省略バージョンが実行され、システム言語、タイムゾーン、登録組織などの情報を入力するように求められます。Windows 起動エージェントで Windows Sysprep を実行すると、応答ファイルによってこのステップが自動化されます。

## [開始する前に]
<a name="sysprep-begin"></a>
+ Windows Sysprep を実行する前に、Windows Sysprep を実行する単一の管理者アカウント以外のすべてのローカルユーザーアカウントとすべてのアカウントプロファイルを削除することをお勧めします。追加のアカウントとプロファイルを使用して Windows Sysprep を実行すると、プロファイルデータの損失や Windows Sysprep の完了の失敗など、予期しない動作が発生する可能性があります。
+ 詳細については、「[Sysprep Overview](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview)」を参照してください。
+ Sysprep でサポートされているサーバーロールについては、「[Sysprep Support for Server Roles](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles)」を参照してください。

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

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

**Topics**
+ [Windows Sysprep のアクション](#sysprep-actions-ec2launchv2)
+ [Sysprep 後](#sysprep-post-ec2launchv2)
+ [EC2Launch v2 で Windows Sysprep を実行する](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep のアクション
<a name="sysprep-actions-ec2launchv2"></a>

イメージを準備するために、Windows Sysprep と EC2Launch v2 は以下のアクションを実行します。

1. **[EC2Launch の設定]** ダイアログボックスで **[Sysprep によるシャットダウン]** を選択すると、システムは `ec2launch sysprep` コマンドを実行します。

1. EC2Launch v2 は、`unattend.xml` のレジストリ値を読み取ることで、`HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` ファイルの内容を編集します。このファイルは `C:\ProgramData\Amazon\EC2Launch\sysprep` ディレクトリにあります。

1. システムは `BeforeSysprep.cmd` を実行します。このコマンドは、次のレジストリキーを作成します。

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

   レジストリキーは再度有効になるまで RDP 接続を無効にします。RDP 接続を無効にすることは、安全上の観点より必要となります。これは、Windows Sysprep 実行後の最初のブートセッション中、RDP が接続できるわずかな時間の間に管理者パスワードが空白となるためです。

1. EC2Launch v2 サービスは、以下のコマンドを実行して Windows Sysprep を呼び出します。

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### ステップの一般化
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2 は、コンピュータ名や SID などイメージに固有の情報と設定を削除します。インスタンスがドメインのメンバーである場合は、そのドメインから削除されます。`unattend.xml` 応答ファイルには、このステップに影響する以下の設定が含まれています。
  + **PersistAllDeviceInstalls**: この設定は、Windows セットアップがデバイスを削除したり再設定することを防ぐことによってイメージ準備プロセスを高速化します。これは、Amazon AMI を実行するためには特定のドライバーが必要となり、これらのドライバーの再検出には時間がかかるためです。
  + **DoNotCleanUpNonPresentDevices**: この設定では、現在存在しないデバイス用のプラグアンドプレイ情報を保持します。
+ Windows Sysprep は AMI の作成の準備完了後に OS をシャットダウンします。システムは、新しいインスタンスを起動するか、または元のインスタンスを起動します。

### ステップの特定化
<a name="sysprep-specialize-ec2launchv2"></a>

システムは、コンピュータ名や SID など OS に固有の要件を生成します。またシステムは、`unattend.xml` 応答ファイルで指定した設定に基づいて、以下のアクションを実行します。
+ **CopyProfile**: Windows Sysprep は、組み込まれた管理者のプロファイルを含むすべてのユーザープロファイルを削除するように設定できます。この設定は、組み込まれた管理者アカウントを保持するため、アカウントで作成したすべてのカスタム設定は新しいイメージに引き継がれます。デフォルト値は `True` です。

  **CopyProfile** は、デフォルトのプロファイルを既存のローカル管理者プロファイルに置き換えます。Windows Sysprep の実行後にログインしたすべてのアカウントは、最初のログイン時にそのプロファイルとその内容のコピーを受け取ります。

  新しいイメージに引き継ぐ特定のユーザープロファイルがない場合、この設定を `False` に変更します。Windows Sysprep はすべてのユーザープロファイルを削除します (これにより時間とディスク領域が節約されます)。
+ **タイムゾーン**: タイムゾーンはデフォルトで世界時 (UTC) に設定されます。
+ **順序 1 の同期コマンド**: システムは次のコマンドを実行して、管理者アカウントを有効化し、パスワード条件を指定します。

  ```
  net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  ```
+ **順序 2 の同期コマンド**: システムは、管理者パスワードを組み換えます。このセキュリティ対策の目的は、`setAdminAccount` のタスクを設定していない場合、Windows Sysprep の完了後にインスタンスへのアクセスを防ぐことです。

  システムは、ローカルの起動エージェントディレクトリ (`C:\Program Files\Amazon\EC2Launch\`) から次のコマンドを実行します。

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ リモートデスクトップ接続を有効にするため、システムはターミナルサーバーの `fDenyTSConnections` レジストリキーを false に設定します。

### OOBE のステップ
<a name="sysprep-oobe-ec2launchv2"></a>

1. システムは EC2Launch v2 応答ファイルを使用して以下の設定を指定します。
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**注記**  
一般化ステップと特殊化ステップの実行中、EC2Launch v2 によって OS のステータスがモニタリングされます。OS が Sysprep のステップにあることが EC2Launch v2 によって検出された場合、以下のメッセージがシステムログに発行されます。  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. システムは EC2Launch v2 を実行します。

## Sysprep 後
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep が完了すると、EC2Launch v2 によって以下のメッセージがコンソール出力に送信されます。

```
Windows sysprep configuration complete.
```

次に、EC2Launch v2 は以下のアクションを実行します。

1. `agent-config.yml` ファイルの内容を読み取り、設定されたタスクを実行します。

1. `preReady` ステージのすべてのタスクを実行します。

1. 完了したら、`Windows is ready` メッセージをインスタンスのシステムログに送信します。

1. `PostReady` ステージのすべてのタスクを実行します。

EC2Launch v2 の詳細については、「[EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する](ec2launch-v2.md)」を参照してください。

## EC2Launch v2 で Windows Sysprep を実行する
<a name="sysprep-gui-procedure-ec2launchv2"></a>

以下の手順に従って、EC2Launch v2 で Windows Sysprep を使用して標準化 AMI を作成します。

1. Amazon EC2 コンソールで、複製する AMI の場所を特定します。

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

1. カスタム設定

   1. Windows の **[スタート]** メニューから、**[Amazon EC2Launch 設定]** を検索して選択します。**[Amazon EC2Launch 設定]** ダイアログボックスのオプションと設定の詳細については、「[EC2Launch v2 設定を Windows インスタンスに構成する](ec2launch-v2-settings.md)」を参照してください。

   1. 変更を加えた場合、シャットダウンする前に **[保存]** を選択してください。

1. **[Sysprep を使用してシャットダウン]** または **[Sysprep を使用せずにシャットダウン]** を選択します。

Windows Sysprep を実行しインスタンスをシャットダウンするかどうか確認を求められたら **[はい]** をクリックします。EC2Launch v2 は Windows Sysprep を実行します。次に、インスタンスからログオフされ、インスタンスがシャットダウンされます。Amazon EC2 コンソールの [**Instances (インスタンス)**] ページでは、インスタンスの状態が `Running` から `Stopping` に変わった後、`Stopped` に変わります。この状態になれば、インスタンスから AMI を安全に作成できます。

コマンドラインから Windows Sysprep ツールを手動で呼び出すには、次のコマンドを使います。

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```

# 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)」を参照してください。

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

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

**Topics**
+ [Windows Sysprep のアクション](#sysprep-actions)
+ [Sysprep 後](#sysprep-post)
+ [EC2Config サービスで Windows Sysprep を実行する](#sysprep-gui-procedure)

## Windows Sysprep のアクション
<a name="sysprep-actions"></a>

イメージを準備するために、Windows Sysprep と EC2Config サービスは次のアクションを実行します。

1. **[EC2 サービスのプロパティ]** ダイアログボックスで **[Sysprep を使用してシャットダウンする]** を選択すると、システムは **ec2config.exe -sysprep** コマンドを実行します。

1. EC2Config サービスは `BundleConfig.xml` ファイルの内容を読み込みます。デフォルトでは、このファイルは `C:\Program Files\Amazon\Ec2ConfigService\Settings` ディレクトリにあります。

    `BundleConfig.xml` ファイルには、以下の設定が含まれています。これらの設定は変更できます：
   + **AutoSysprep**: Windows Sysprep を自動で使用するかどうかを示します。[EC2 サービスプロパティ] ダイアログボックスで Windows Sysprep を実行した場合、この値を変更する必要はありません。デフォルト値は `No` です。
   + **SetRDPCertificate**: リモートデスクトップサーバーに自己署名証明書を設定します。これによって、リモートデスクトッププロトコール (RDP) を安全に使用して、インスタンスに接続できます。新しいインスタンスに証明書が必要な場合は、値を `Yes` に変更します。この設定は、Windows Server 2012 のインスタンスでは使用されません。これらのオペレーティングシステムが独自の証明書を生成できるためです。デフォルト値は `No` です。
   + **SetPasswordAfterSysprep**: 新しく起動したインスタンスにランダムなパスワードを設定し、ユーザー起動キーで暗号化して、暗号化されたパスワードをコンソールに出力します。新しいインスタンスにランダムに暗号化されたパスワードを設定しない場合は、値 `No` に変更します。デフォルト値は `Yes` です。
   +  **PreSysprepRunCmd**: 実行するコマンドの場所。コマンドは、デフォルトでは `C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd` ディレクトリにあります。

1. システムは `BeforeSysprep.cmd` を実行します。このコマンドは、次のレジストリキーを作成します。

   ```
   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
   ```

   レジストリキーは再度有効になるまで RDP 接続を無効にします。RDP 接続を無効にすることは、安全上の観点より必要となります。これは、Windows Sysprep 実行後の最初のブートセッション中、RDP が接続できるわずかな時間の間に管理者パスワードが空白となるためです。

1. EC2Config サービスは、以下のコマンドを実行して Windows Sysprep を呼び出します。

   ```
   sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
   ```

### ステップの一般化
<a name="sysprep-generalize"></a>
+ このツールは、コンピュータ名や SID のようなイメージに固有の情報と設定を削除します。インスタンスがドメインのメンバーである場合は、そのドメインから削除されます。`sysprep2008.xml` 応答ファイルには、このステップに影響する以下の設定が含まれています。
  + **PersistAllDeviceInstalls**: この設定は、Windows セットアップがデバイスを削除したり再設定することを防ぐことによってイメージ準備プロセスを高速化します。これは、Amazon AMI を実行するためには特定のドライバーが必要となり、これらのドライバーの再検出には時間がかかるためです。
  + **DoNotCleanUpNonPresentDevices**: この設定では、現在存在しないデバイス用のプラグアンドプレイ情報を保持します。
+ Windows Sysprep は AMI の作成の準備完了後に OS をシャットダウンします。システムは、新しいインスタンスを起動するか、または元のインスタンスを起動します。

### ステップの特定化
<a name="sysprep-specialize"></a>

システムは、コンピュータ名や SID など OS に固有の要件を生成します。またシステムは、sysprep2008.xml 応答ファイルで指定した設定に基づいて、次のアクションを実行します。
+ **CopyProfile**: Windows Sysprep は、組み込まれた管理者のプロファイルを含むすべてのユーザープロファイルを削除するように設定できます。この設定は、組み込まれた管理者アカウントを保持するため、アカウント作成したすべてのカスタム設定は新しいイメージに引き継がれます。デフォルト値は True です。

  **CopyProfile** は、デフォルトのプロファイルを既存のローカル管理者プロファイルに置き換えます。Windows Sysprep の実行後にログインしたすべてのアカウントは、最初のログイン時にそのプロファイルとその内容のコピーを受け取ります。

  新しいイメージに引き継ぐことを希望する特定のユーザープロファイルがない場合、この設定を「いいえ」に変更します。Windows Sysprep はすべてのユーザーを削除します。これによって時間とディスク領域が節約されます。
+ **タイムゾーン**: タイムゾーンはデフォルトで世界時 (UTC) に設定されます。
+ **順序 1 の同期コマンド**: システムは次のコマンドを実行して、管理者アカウントを有効化し、パスワード条件を指定します。

  **net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES**
+ **順序 2 の同期コマンド**: システムは、管理者パスワードを組み換えます。このセキュリティ対策の目的は、ec2setpassword 設定を有効にしていない場合、Windows Sysprep の完了後にインスタンスへのアクセスを防ぐことです。

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1ScramblePassword.exe" -u Administrator
+ **順序 3 の同期コマンド**: システムは次のコマンドを実行します。

  C: \$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1SysprepSpecializePhase.cmd

   このコマンドは、RDP を再度有効にする次のレジストリキーを追加します。

  reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 0 /f

### OOBE のステップ
<a name="sysprep-oobe"></a>

1. EC2Config サービス応答ファイルを使用すると、システムは次の設定を指定します。
   + <InputLocale>en-US</InputLocale>
   + <SystemLocale>en-US</SystemLocale>
   + <UILanguage>en-US</UILanguage>
   + <UserLocale>en-US</UserLocale>
   + <HideEULAPage>true</HideEULAPage>
   + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
   + <NetworkLocation>その他</NetworkLocation>
   + <ProtectYourPC>3</ProtectYourPC>
   + <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
   + <TimeZone>UTC</TimeZone>
   + <RegisteredOrganization>Amazon.com</RegisteredOrganization>
   + <RegisteredOwner>Amazon</RegisteredOwner>
**注記**  
一般化と特定化ステップにおいて、EC2Config サービスは OS のステータスをモニタリングします。OS が Sysprep のステップにあることが EC2Config によって検出された場合、以下のメッセージがシステムログに発行されます。  
EC2ConfigMonitorState: 0 Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. OOBE フェーズが完了すると、システムは `SetupComplete.cmd` から `C:\Windows\Setup\Scripts\SetupComplete.cmd` を実行します。2015 年 4 月以前の Amazon パブリック AMI では、このファイルは空となり、イメージには何も実行されません。2015 年 4 月以降のパブリック AMI では、ファイルに **call "C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1PostSysprep.cmd"** の値が含まれます。

1. システムが `PostSysprep.cmd` を実行し、次の操作を行います。
   + ローカル管理者パスワード期限切れにならないよう設定します。パスワードの期限が切れた場合、管理者がログインできないことがあります。
   + MSSQLServer マシン名を設定すると (インストールされている場合)、名前は AMI で同期されます。

## Sysprep 後
<a name="sysprep-post"></a>

Windows Sysprep が完了したら、EC2Config サービスは次のメッセージをコンソール出力へ送信します。

```
Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End
```

そして、EC2Config は次のアクションを実行します。

1. config.xml ファイルのコンテンツを読み取り、すべての有効なプラグインを示します。

1. 「Windows の準備が終了する前」のすべてのプラグインを同時に実行します。
   + Ec2SetPassword
   + Ec2SetComputerName
   + Ec2InitializeDrives
   + Ec2EventLog
   + Ec2ConfigureRDP
   + Ec2OutputRDPCert
   + Ec2SetDriveLetter
   + Ec2WindowsActivate
   + Ec2DynamicBootVolumeSize

1. これが完了すると、「Windows の準備完了」のメッセージをインスタンスのシステム ログに送信します。

1. 「Windows の準備が終了した後」のすべてのプラグインを同時に実行します
   + Amazon CloudWatch Logs 
   + UserData
   + AWS Systems Manager (Systems Manager) 

Windows プラグインの詳細については、「[EC2Config サービスを使用して、EC2 レガシー Windows オペレーティングシステムインスタンスの起動時にタスクを実行する](ec2config-service.md)」を参照してください。

## EC2Config サービスで Windows Sysprep を実行する
<a name="sysprep-gui-procedure"></a>

以下の手順に従って、Windows Sysprep と EC2Config サービスを使用して標準化 AMI を作成します。

1. Amazon EC2 コンソールで複製を希望する AMI を見つけるか、[作成](creating-an-ami-ebs.md)します。

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

1. カスタマイズする。

1. EC2Config サービス応答ファイルで特定設定を指定します。

   `C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`

1. Windows の [**スタート**] メニューから [**すべてのプログラム**] を選び、次に [**EC2ConfigService 設定**] を選択します。

1. [**Ec2 サービスプロパティ**] ダイアログボックスで [**イメージ**] タブを選択します。Ec2 サービスプロパティダイアログボックスのオプションと設定についての詳細は、「[Ec2 サービスプロパティ](ec2config-service.md)」を参照してください。

1. 管理者パスワードのオプションを選択してから、[**Shutdown with Sysprep**] または [**Shutdown without Sysprep**] を選択します。EC2Config は、選択したパスワードオプションに基づいて設定ファイルを編集します。
   + **ランダム**: EC2Config はパスワードを生成してユーザーのキーで暗号化し、暗号化されたパスワードをコンソールに表示します。この設定は初回起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
   + **指定**: パスワードは、Windows Sysprep 応答ファイルに暗号化されていない形式 (平文) で保存されます。Windows Sysprep が次に実行されると、管理者パスワードに設定されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。サービスを再開すると、管理者パスワードは削除されます。このパスワードは後で取得できないため覚えておくことが重要です。
   + **既存のパスワードを保持**: Windows Sysprep の実行時や EC2Config の再起動時に、管理者アカウントの既存のパスワードは変更されません。このパスワードは後で取得できないため覚えておくことが重要です。

1. [**OK**] を選択してください。

Windows Sysprep を実行しインスタンスをシャットダウンするかどうか確認を求められたら **[はい]** をクリックします。これにより、EC2Config が Windows Sysprep を実行します。次に、ユーザーは自動的にログオフさせられ、インスタンスがシャットダウンします。Amazon EC2 コンソールの [**インスタンス**] ページを見ると、インスタンスの状態が `Running` から `Stopping`、最終的に `Stopped` に変わるのがわかります。この状態になれば、インスタンスから AMI を安全に作成できます。

コマンドラインから Windows Sysprep ツールを手動で呼び出すには、次のコマンドを使います。

```
"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" 
```

**注記**  
CMD シェルが C:\$1Program Files\$1Amazon\$1EC2ConfigService\$1 ディレクトリ内に既に存在する場合、コマンドの二重引用符は不要です。

ただし、この操作は慎重に行ってください。`Ec2ConfigService\Settings` フォルダで指定した XML ファイルオプションが正しくないと、インスタンスに接続できなくなる場合があります。設定ファイルの詳細については、「[EC2Config の設定ファイル](ec2config-service.md#UsingConfigXML_WinAMI)」を参照してください。コマンドラインから Windows Sysprep を設定して実行する例については、「`Ec2ConfigService\Scripts\InstallUpdates.ps1`」を参照してください。