

# 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
```