EC2Launch で Windows Sysprep を使って AMI を作成する - Amazon Elastic Compute Cloud

EC2Launch で Windows Sysprep を使って AMI を作成する

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

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

重要

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

Windows Sysprep の EC2Launch 応答ファイルとバッチファイル

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

Unattend.xml

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

BeforeSysprep.cmd

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

SysprepSpecialize.cmd

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

EC2Launch で Windows Sysprep を実行する

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

[EC2 起動設定] アプリケーションを使用して Windows Sysprep を実行するには
  1. Amazon EC2 コンソールで、Windows Server 2016 以降の AMI を見つけるか作成します。

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

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

  4. [EC2LaunchSettings] アプリケーションを検索して実行します。このアプリケーションは、デフォルトでは C:\ProgramData\Amazon\EC2-Windows\Launch\Settings ディレクトリにあります。

    EC2 Launch Settings アプリケーション
  5. 必要に応じて、オプションを選択または選択解除します。これらの設定は LaunchConfig.json ファイルに保存されます。

  6. [Administrator Password] で、以下のいずれかを行います。

    • [Random] を選択します。EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。

    • [Specify] を選択し、システム要件を満たすパスワードを入力します。このパスワードはクリアテキストとして LaunchConfig.json に保存され、Windows Sysprep で管理者パスワードが設定されると削除されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。

    • [DoNothing] を選択して、unattend.xml ファイルでパスワードを指定します。unattend.xml でパスワードを指定しない場合、管理者アカウントは無効になります。

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

EC2Launch を使用して手動で Windows Sysprep を実行するには
  1. Amazon EC2 コンソールで、複製する Windows Server 2016 以降の Datacenter エディション AMI を見つけるか作成します。

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

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

  4. 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 でパスワードを指定しない場合、管理者アカウントは無効になります。

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

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

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

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

カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新する

カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新するには、以下のいずれかの操作を行います。

  • EC2LaunchSettings GUI (C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe) を実行し、Windows Sysprep を使用してシャットダウンするオプションを選択します。

  • AMI を作成する前に、EC2LaunchSettings を実行し、Windows Sysprep を使用しないでシャットダウンします。これにより、次回の起動時に実行される EC2 Launch の初期化タスクが設定され、インスタンスのサブネットに基づいてルートが設定されます。

  • PowerShell から AMI を作成する前に、EC2 Launch の初期化タスクを手動で再スケジュールします。

    重要

    タスクを再スケジューリングする前に、デフォルトではパスワードリセット動作となることに注意してください。

  • Windows のライセンス認証またはインスタンスメタデータの通信に関するエラーが発生している実行中のインスタンスのルートを更新するには、「Windows のライセンス認証を行うことができません」を参照してください。