カスタム Windows AMI を作成する - Amazon Elastic Compute Cloud

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

カスタム Windows AMI を作成する

既存の Windows AMI からインスタンスを起動し、インスタンスをカスタマイズして、この更新された設定をカスタム AMI として保存できます。この新しいカスタム AMI から起動されるインスタンスには、AMI の作成時に追加したカスタマイズが含まれます。

AMI には分類や管理のために任意のタグを付けられます。詳細については、「Amazon EC2 リソースのタグ付け」を参照してください。

カスタム Linux AMI を作成するには、そのインスタンスのボリュームのタイプに対応した手順を使用します。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EBS-backed Linux AMI の作成」または「Instance store-backed Linux AMI の作成」を参照してください。

カスタム AMI の作成の仕組み

最初に、作成する AMI と同様の AMI からインスタンスを起動します。インスタンスに接続し、それをカスタマイズできます。インスタンスが希望どおりにセットアップされたら、インスタンスを停止してデータの整合性を確認した後で AMI を作成し、その後イメージを作成します。AMI は自動的に登録されます。

AMI 作成プロセスの間、Amazon EC2 はインスタンスのルートボリュームとインスタンスにアタッチされているその他の EBS ボリュームのスナップショットを作成します。AMI の登録を解除してスナップショットを削除するまで、スナップショットは課金の対象となります。詳細については、「Windows AMI の登録解除」を参照してください。インスタンスにアタッチされるいずれかのボリュームが暗号化されている場合、新しい AMI は、Amazon EBS 暗号化 をサポートするインスタンスでのみ正常に起動します。詳細については、「Amazon EBS 暗号化」を参照してください。

ボリュームのサイズによっては、AMI 作成プロセスの完了に数分かかる場合があります (最長で 24 時間かかることもあります)。AMI を作成する前に、ボリュームのスナップショットを作成しておくと、効率が向上する可能性があります。この方法では、AMI を作成する際に作成する必要があるのは小さい差分スナップショットのみになるため、プロセスがよりすばやく完了します (スナップショット作成の合計時間は同じです)。詳細については、「Amazon EBS スナップショットの作成」を参照してください。

プロセスが完了すると、新しい AMI と、インスタンスのルートボリュームから作成されたスナップショットが与えられます。ユーザーが新しい AMI を使用してインスタンスを起動すると、Amazon はスナップショットを使用して、そのルートボリュームのために新しい EBS ボリュームを作成します。

ルートデバイスボリュームに加えて、インスタンスストアボリュームまたは Amazon Elastic Block Store (Amazon EBS) ボリュームをインスタンスに追加した場合、新しい AMI のブロックデバイスマッピングにこれらのボリュームの情報が含まれ、新しい AMI から起動するインスタンスのブロックデバイスマッピングに自動的にこれらのボリュームの情報が含まれます。新しいインスタンスのブロックデバイスマッピングに指定されているインスタンスストアボリュームは新しく、AMI の作成に使用したインスタンスのインスタンスストアボリュームからのデータは含まれていません。EBS ボリュームのデータは永続的です。詳細については、「ブロックデバイスマッピング」を参照してください。

注記

カスタム AMI から新しいインスタンスを作成する場合、本番稼働用環境に配置する前にそのルートボリュームと追加の EBS ストレージの両方を初期化する必要があります。詳細については、「Amazon EBS ボリュームの初期化」を参照してください。

実行中のインスタンスからの Windows AMI を作成する

AMI は、AWS マネジメントコンソール またはコマンドラインを使用して作成できます。次の図は、実行中の EC2 インスタンスから AMI を作成するプロセスをまとめたものです。既存の AMI から開始して、インスタンスを起動してカスタマイズし、そこから新しい AMI を作成して、最後に新しい AMI のインスタンスを起動します。以下の図のステップは次の手順のステップに一致しています。稼働中の Windows インスタンスがすでにある場合は、ステップ 4 に直接進むことができます。


					インスタンスから AMI を作成するワークフロー

コンソールを使用してインスタンスから AMI を作成するには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[イメージ]、[AMI] の順に選択します。

  3. [フィルタ] オプションを使用して、AMI のリストをニーズに合った Windows AMI に絞り込みます。たとえば、AWS が提供する Windows AMI を表示するには、ドロップダウンリストから [パブリックイメージ] を選択します。検索バーを選択します。メニューから [所有者] を選択し、続いて [Amazon イメージ] を選択します。メニューから [ソース] を選択し、必要な Windows Server のバージョンに応じて、以下のいずれかを入力します。

    • amazon/Windows_Server-2019

    • amazon/Windows_Server-2016

    • amazon/Windows_Server-2012

    • amazon/Windows_Server-2008

    必要なフィルタを追加します。AMI を選択したら、そのチェックボックスをオンにします。

  4. [Launch] を選択します。デフォルト値をそのまま使ってウィザードを完了します。詳細については、「インスタンス起動ウィザードを使用したインスタンスの起動」を参照してください。インスタンスが準備完了になったら、そのインスタンスに接続します。詳細については、「Windows インスタンスに接続する」を参照してください。

  5. 必要に応じてインスタンスで次のアクションを実行してインスタンスをカスタマイズできます。

    • ソフトウェアやアプリケーションをインストールする

    • データをコピーする

    • 起動時間を短縮するために一時ファイルの消去、ハードディスクのデフラグ、占有領域の開放処理を行う。

    • 追加の EBS ボリュームをアタッチする

    • 新規ユーザーアカウントを作成し、Administrators グループに追加する

      AMI を共有している場合、デフォルトの管理者パスワードを開示せずに、これらの認証情報を RDP アクセス用に供給できます。

    • [Windows Server 2016 以降] EC2Launch を使用して、設定を定義します。起動時にランダムなパスワードを生成するには、adminPasswordType 設定を使用します。詳細については、「EC2Launch の設定」を参照してください。

    • [Windows Server 2012 R2 以前] EC2Config を使用して、設定を定義します。起動時にランダムなパスワードを生成するには、Ec2SetPassword プラグインを有効にします。それ以外の場合は、現在の管理者パスワードが使用されます。詳細については、「EC2Config の設定ファイル」を参照してください。

    • [Windows Server 2008 R2] インスタンスが RedHat ドライバーを使用して Xen 仮想化ハードウェアにアクセスする場合は、AMI を作成する前に Citrix ドライバーにアップグレードします。詳細については、「Windows Server 2008 および 2008 R2 インスタンスのアップグレード (Redhat から Citrix PV へのアップグレード)」を参照してください。

  6. ナビゲーションペインで [Instances] を選択し、インスタンスを選択します。[アクション]、[イメージとテンプレート]、[イメージの作成] の順に選択します。

    ヒント

    このオプションが無効になっている場合、そのインスタンスは Amazon EBS-Backed インスタンスではありません。

  7. イメージの一意の名前とオプションの説明を指定します (最大 255 文字)。

    デフォルトでは、Amazon EC2 はインスタンスをシャットダウンし、アタッチされていたすべてのボリュームのスナップショットを作成し、AMI を作成して登録し、インスタンスを再起動します。インスタンスをシャットダウンしない場合、[再起動しない] を選択します。

    警告

    [再起動しない] を選択した場合は、作成されたイメージのファイルシステムの整合性は保証されません。

    (オプション) ルートボリューム、EBS ボリューム、インスタンスストアボリュームを必要に応じて変更します。次に例を示します。

    • ルートボリュームのサイズを変更するには、[Type] 列で [Root] ボリュームを見つけ、[Size] フィールドに入力します。

    • インスタンスの起動に使用された AMI のブロックデバイスマッピングで指定された EBS ボリュームを非表示にするには、リストから EBS ボリュームを見つけ、[Delete] を選択します。

    • EBS ボリュームを追加するには、[Add New Volume]、[Type]、[EBS] の順に選択し、フィールドに入力します。その後新しい AMI からインスタンスを起動すると、追加されたボリュームは自動的にインスタンスにアタッチされます。空のボリュームはフォーマットしてマウントする必要があります。スナップショットベースのボリュームはマウントする必要があります。

    • インスタンスの起動に使用された AMI のブロックデバイスマッピングで指定されたインスタンスストアボリュームを非表示にするには、リストからボリュームを見つけ、[Delete] を選択します。

    • インスタンスストアボリュームを追加するには、[新しいボリュームの追加]、[Type]、[インスタンスストア] の順に選択し、[デバイス] リストからデバイス名を選択します。その後新しい AMI からインスタンスを起動すると、追加されたボリュームは自動的に初期化されてマウントされます。これらのボリュームには、AMI の作成に使用された実行中のインスタンスのインスタンスストアボリュームのデータは含まれません。

    完了したら、[イメージの作成] を選択します。

  8. AMI の作成中に、ナビゲーションペインで [AMI] を選択してステータスを表示できます。最初は、pending です。数分後、ステータスは available に変わるはずです。

    (オプション) ナビゲーションペインの [Snapshots] を選択して、新しい AMI に作成されたスナップショットを表示します。ユーザーがこの AMI からインスタンスを起動すると、Amazon はこのスナップショットを使用して、ルートデバイスボリュームを作成します。

  9. 新しい AMI からインスタンスを起動します。詳細については、「インスタンス起動ウィザードを使用したインスタンスの起動」を参照してください。新しい実行中のインスタンスには、前の手順で適用したすべてのカスタマイズが含まれるほか、ユーザーデータ (インスタンスの起動時に実行されるスクリプト) など、インスタンスの起動時に追加するその他のカスタマイズも含まれます。

コマンドラインを使用したインスタンスからの AMI の作成

次のコマンドの 1 つを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

Sysprep を使用して標準化された Amazon マシンイメージ (AMI) を作成する

システム準備 (Sysprep) ツールは、Microsoft Windows のカスタマイズされたインストールの重複プロセスを簡略化します。Sysprep を使用して標準の Amazon マシンイメージ (AMI) を作成できます。この標準化されたイメージから Windows 向けの新しい Amazon EC2 インスタンスを作成できるようになります。

EC2 Image Builder を使用して、ソフトウェアと設定が事前にインストール、定義、カスタマイズされたセキュアな最新の「ゴールデン」サーバーイメージの作成、管理、デプロイを自動化することをお勧めします。

Sysprep を使用して標準化 AMI を作成する場合は、EC2Launch v2 で Sysprep を実行することをお勧めします。EC2Config エージェント (Windows Server 2012 R2 以前) または EC2Launch エージェント (Windows Server 2016 以降) をまだ使用している場合は、EC2Config および EC2Launch での Sysprep の使用に関する以下のドキュメントを参照してください。

重要

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

Sysprep のトラブルシューティングについては、「Sysprep のトラブルシューティング」を参照してください。

開始する前に

  • Sysprep を実行する前に、Sysprep を実行する単一の管理者アカウント以外のすべてのローカルユーザーアカウントとすべてのアカウントプロファイルを削除することをお勧めします。追加のアカウントとプロファイルを使用して Sysprep を実行すると、プロファイルデータの損失や Sysprep の完了の失敗など、予期しない動作が発生する可能性があります。

  • Microsoft TechNet で Sysprep の詳細を参照してください。

  • Sysprep でサポートされているサーバーロールについて説明します。

EC2Launch v2 での Sysprep の使用

このセクションでは、Sysprep のさまざまな実行ステップと、イメージの準備時に EC2Launch v2 サービスによって実行されるタスクの詳細について説明します。また、EC2Launch v2 サービスで Sysprep を使用して標準化 AMI を作成する手順も示します。

EC2Launch v2 での Sysprep の使用に関するトピック

Sysprep のステップ

Sysprep は、次のステップを通じて実行されます:

  • 一般化: このツールはイメージに固有の情報と設定を削除します。Sysprep は、たとえばセキュリティ識別子 (SID)、コンピュータ名、イベントログおよび特定のドライバーなどを削除します。このステップを完了すると、オペレーティングシステム (OS) は AMI を作成する準備が整いました。

    注記

    EC2Launch v2 サービスで Sysprep を実行すると、PersistAllDeviceInstalls 設定はデフォルトで true に設定されているため、システムによってドライバーの削除が禁止されます。

  • 特定化: プラグアンドプレイはコンピュータをスキャンして、検出されたデバイス用のドライバをインストールします。このツールは、コンピュータ名や SID など OS に固有の要件を生成します。必要に応じて、このフェーズでコマンドを実行できます。

  • アウトオブボックスエクスペリエンス (OOBE): システムによって Windows セットアップの省略バージョンが実行され、システム言語、タイムゾーン、登録組織などの情報を入力するように求められます。EC2Launch v2 で Sysprep を実行すると、応答ファイルによってこのステップが自動化されます。

Sysprep のアクション

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

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

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

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

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

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

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

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

ステップの一般化
  • EC2Launch v2 は、コンピュータ名や SID などイメージに固有の情報と設定を削除します。インスタンスがドメインのメンバーである場合は、そのドメインから削除されます。unattend.xml 応答ファイルには、このステップに影響する以下の設定が含まれています。

    • PersistAllDeviceInstalls: この設定は、Windows セットアップがデバイスを削除したり再設定することを防ぐことによってイメージ準備プロセスを高速化します。これは、Amazon AMI を実行するためには特定のドライバーが必要となり、これらのドライバーの再検出には時間がかかるためです。

    • DoNotCleanUpNonPresentDevices: この設定では、現在存在しないデバイス用のプラグアンドプレイ情報を保持します。

  • Sysprep は AMI の作成の準備完了後に OS をシャットダウンします。システムは、新しいインスタンスを起動するか、または元のインスタンスを起動します。

ステップの特定化

システムは、コンピュータ名や SID など OS に固有の要件を生成します。またシステムは、unattend.xml 応答ファイルで指定した設定に基づいて、以下のアクションを実行します。

  • CopyProfile: Sysprep では組み込まれた管理者のプロファイルを含むすべてのユーザープロファイルを削除するように設定できます。この設定は、組み込まれた管理者アカウントを保持するため、アカウントで作成したすべてのカスタム設定は新しいイメージに引き継がれます。デフォルト値は True です。

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

    新しいイメージに引き継ぐ特定のユーザープロファイルがない場合、この設定を False に変更します。Sysprep はすべてのユーザープロファイルを削除します (これにより時間とディスク領域が節約されます)。

  • タイムゾーン: タイムゾーンはデフォルトで世界時 (UTC) に設定されます。

  • 順序 1 の同期コマンド: システムは次のコマンドを実行して、管理者アカウントを有効化し、パスワード条件を指定します。

    net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES

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

    C:\Program Files\Amazon\Ec2ConfigService\ScramblePassword.exe" -u Administrator

  • 順序 3 の同期コマンド: システムは次のコマンドを実行します。

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

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

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

OOBE のステップ
  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_STATE_UNDEPLOYABLE

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

Sysprep 後

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

Windows sysprep configuration complete.

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

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

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

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

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

EC2Launch v2 の詳細については、「EC2Launch v2 を使用した Windows インスタンスの設定」を参照してください。

EC2Launch v2 で Sysprep を実行する

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

  1. Amazon EC2 コンソールで複製を希望する AMI を見つけるか、作成します。

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

  3. カスタマイズする。

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

  5. [Shutdown with Sysprep (Sysprep を使用したシャットダウン)] または [Shutdown without Sysprep (Sysprep を使用しないシャットダウン)] を選択します。

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

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

"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep

EC2Launch での Sysprep の使用

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

重要

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

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

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

Unattend.xml

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

BeforeSysprep.cmd

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

SysprepSpecialize.cmd

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

EC2Launch での Sysprep の実行

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

EC2Launch Settings アプリケーションを使用して 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 に保存され、Sysprep で管理者パスワードが設定されると削除されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。

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

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

EC2Launch を使用して手動で 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 に保存され、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) を実行し、Sysprep を使用してシャットダウンするオプションを選択します。

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

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

    重要

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

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

EC2Config での Sysprep の使用

このセクションでは、Sysprep のさまざまな実行ステップと、イメージの準備時に EC2Config サービスによって実行されるタスクの詳細について説明します。また、EC2Config サービスで Sysprep を使用して標準化 AMI を作成する手順も示します。

Sysprep のステップ

Sysprep は、次のステップを通じて実行されます:

  • 一般化: このツールはイメージに固有の情報と設定を削除します。Sysprep は、たとえばセキュリティ識別子 (SID)、コンピュータ名、イベントログおよび特定のドライバーなどを削除します。このステップを完了すると、オペレーティングシステム (OS) は AMI を作成する準備が整いました。

    注記

    EC2Config サービスで Sysprep を実行すると、システムはドライバーの削除を防ぎます。これは、PersistAllDeviceInstalls の設定がデフォルトで有効となっているためです。

  • 特定化: プラグアンドプレイはコンピュータをスキャンして、検出されたデバイス用のドライバをインストールします。このツールは、コンピュータ名や SID など OS に固有の要件を生成します。必要に応じて、このフェーズでコマンドを実行できます。

  • アウトオブボックスエクスペリエンス (OOBE): システムは Windows セットアップの省略されたバージョンを実行し、ユーザーはシステム言語、タイムゾーンや登録された組織などの情報を入力するよう求められます。EC2Config で Sysprep を実行すると、応答ファイルはこのステップを自動化します。

Sysprep のアクション

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

  1. EC2 Service Properties ダイアログボックスで Shutdown with Sysprep を選択すると、システムは ec2config.exe –sysprep コマンドを実行します。

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

    BundleConfig.xml ファイルには、以下の設定が含まれています。これらの設定は変更できます:

    • AutoSysprep: Sysprep を自動で使用するかどうかを示します。EC2 Service Properties ダイアログボックスで Sysprep を実行した場合、この値を変更する必要はありません。デフォルト値は No です。

    • SetRDPCertificate: リモートデスクトップサーバーに自己署名証明書を設定します。これによって、リモートデスクトッププロトコール (RDP) を安全に使用して、インスタンスに接続できます。新しいインスタンスに証明書が必要な場合は、値を Yes に変更します。この設定は、Windows Server 2008 および Windows Server 2012 のインスタンスでは使用されません。これらのオペレーティングシステムは独自の証明書を生成できるためです。デフォルト値は No です。

    • SetPasswordAfterSysprep: 新しく起動したインスタンスにランダムなパスワードを設定し、ユーザー起動キーで暗号化して、暗号化されたパスワードをコンソールに出力します。新しいインスタンスにランダムに暗号化されたパスワードを設定しない場合は、値 No に変更します。デフォルト値は Yes です。

    • PreSysprepRunCmd: 実行するコマンドの場所。コマンドは、デフォルトでは C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd ディレクトリにあります。

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

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

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

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

    sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
ステップの一般化
  • このツールは、コンピュータ名や SID のようなイメージに固有の情報と設定を削除します。インスタンスがドメインのメンバーである場合は、そのドメインから削除されます。sysprep2008.xml 応答ファイルには、このステップに影響する以下の設定が含まれています。

    • PersistAllDeviceInstalls: この設定は、Windows セットアップがデバイスを削除したり再設定することを防ぐことによってイメージ準備プロセスを高速化します。これは、Amazon AMI を実行するためには特定のドライバーが必要となり、これらのドライバーの再検出には時間がかかるためです。

    • DoNotCleanUpNonPresentDevices: この設定では、現在存在しないデバイス用のプラグアンドプレイ情報を保持します。

  • Sysprep は AMI の作成の準備完了後に OS をシャットダウンします。システムは、新しいインスタンスを起動するか、または元のインスタンスを起動します。

ステップの特定化

システムは、コンピュータ名や SID など OS に固有の要件を生成します。またシステムは、sysprep2008.xml 応答ファイルで指定した設定に基づいて、次のアクションを実行します。

  • CopyProfile: Sysprep では組み込まれた管理者のプロファイルを含むすべてのユーザープロファイルを削除するように設定できます。この設定は、組み込まれた管理者アカウントを保持するため、アカウント作成したすべてのカスタム設定は新しいイメージに引き継がれます。デフォルト値は True です。

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

    新しいイメージに引き継ぐことを希望する特定のユーザープロファイルがない場合、この設定を「いいえ」に変更します。Sysprep はすべてのユーザーを削除します。これによって時間とディスク領域が節約されます。

  • タイムゾーン: タイムゾーンはデフォルトで世界時 (UTC) に設定されます。

  • 順序 1 の同期コマンド: システムは次のコマンドを実行して、管理者アカウントを有効化し、パスワード条件を指定します。

    net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES

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

    C:\Program Files\Amazon\Ec2ConfigService\ScramblePassword.exe" -u Administrator

  • 順序 3 の同期コマンド: システムは次のコマンドを実行します。

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

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

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

OOBE のステップ
  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_STATE_UNDEPLOYABLE

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

  3. システムが PostSysprep.cmd を実行し、次の操作を行います。

    • ローカル管理者パスワード期限切れにならないよう設定します。パスワードの期限が切れた場合、管理者がログインできないことがあります。

    • MSSQLServer マシン名を設定すると (インストールされている場合)、名前は AMI で同期されます。

Sysprep 後

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

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

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

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

  2. 「Windows の準備が終了する前」のすべてのプラグインを同時に実行します。

    • Ec2SetPassword

    • Ec2SetComputerName

    • Ec2InitializeDrives

    • Ec2EventLog

    • Ec2ConfigureRDP

    • Ec2OutputRDPCert

    • Ec2SetDriveLetter

    • Ec2WindowsActivate

    • Ec2DynamicBootVolumeSize

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

  4. 「Windows の準備が終了した後」のすべてのプラグインを同時に実行します

    • AWS CloudWatch ログ

    • UserData

    • AWS Systems Manager (Systems Manager)

Windows プラグインの詳細については、「EC2Config サービスを使用した Windows インスタンスの設定」を参照してください。

EC2Config サービスで Sysprep を実行する

Sysprep と EC2Config サービスを使って標準化 AMI を作成する次の手順を使用します。

  1. Amazon EC2 コンソールで複製を希望する AMI を見つけるか、作成します。

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

  3. カスタマイズする。

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

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

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

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

  7. 管理者パスワードのオプションを選択してから、[Shutdown with Sysprep] または [Shutdown without Sysprep] を選択します。EC2Config は、選択したパスワードオプションに基づいて設定ファイルを編集します。

    • ランダム: EC2Config はパスワードを生成してユーザーのキーで暗号化し、暗号化されたパスワードをコンソールに表示します。この設定は初回起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。

    • Specify: パスワードは、Sysprep 応答ファイルに暗号化されていない形式 (平文) で保存されます。Sysprep が次に実行されると、管理者パスワードに設定されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。サービスを再開すると、管理者パスワードは削除されます。このパスワードは後で取得できないため覚えておくことが重要です。

    • Keep Existing: Sysprep の実行時や EC2Config の再起動時に、管理者アカウントの既存のパスワードは変更されません。このパスワードは後で取得できないため覚えておくことが重要です。

  8. [OK] を選択します。

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

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

"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep""
注記

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

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