EC2Launch を使用した Windows インスタンスの設定
EC2Launch は、Windows Server 2016 および 2019の AMI で EC2Config サービスを置き換えた Windows PowerShell スクリプトのセットです。これらの AMI の多くはまだ利用可能です。すべてのサポートされている Windows バージョンの最新の起動サービスは EC2Launch v2 です。これは、EC2Config と EC2Launch の両方を置き換えます。詳細については、「EC2Launch v2 を使用した Windows インスタンスの設定」を参照してください。
注記
IMDSv2 で EC2Launch を使用するには、バージョンは 1.3.2002730 以降でなければなりません。
内容
EC2Launch タスク
EC2Launch は最初のインスタンスの起動中に、デフォルトで以下のタスクを実行します。
-
インスタンスに関する情報をレンダリングする新しい壁紙を設定します。
-
コンピュータ名をインスタンスのプライベート IPv4 アドレスに設定します。
-
Amazon EC2 コンソールにインスタンス情報を送信します。
-
EC2 コンソールに RDP 証明書のサムプリントを送信します。
-
管理者アカウントに、ランダムなパスワードを設定します。
-
DNS サフィックスを追加します。
-
オペレーティングシステムパーティションを動的に拡張して、未使用の領域が含まれるようにします。
-
ユーザーデータを実行します (指定された場合)。ユーザーデータを指定する方法については、「インスタンスユーザーデータの使用」を参照してください。
-
メタデータサービスと AWS KMS サーバーに到達するために永続的な静的ルートを設定します。
重要
このインスタンスからカスタム AMI を作成している場合、これらのルートは OS 設定の一部としてキャプチャされます。また、AMI から起動された新しいインスタンスは、サブネットの位置に関係なく、同じルートを保持します。ルートを更新するには、「カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新する」を参照してください。
以下のタスクは、EC2Config サービスとの下位互換性を維持するために役立ちます。また、起動中にこれらのタスクを実行するように EC2Launch を設定することもできます。
-
セカンダリ EBS ボリュームを初期化します。
-
EC2 コンソールのログに Windows イベントログを送信します。
-
Windows の使用準備ができている旨のメッセージを EC2 コンソールに送信します。
Windows Server 2019 の詳細については、Microsoft.com にある「Compare Features in Windows Server Versions (Windows Server 各バージョンの機能の比較)
Telemetry
テレメトリは、AWSを使用して、要件の理解を深め、問題を診断し、AWSのサービスのユーザーエクスペリエンスを向上するのに役立つ追加情報です。
EC2Launch バージョン 1.3.2003498
およびそれ以降のバージョンは、使用状況指標やエラーなどのテレメトリを収集します。このデータは、EC2Launch が実行される Amazon EC2 インスタンスから収集されます。これには、AWSによって所有されるすべての Windows AMI が含まれます。
EC2Launch では、以下のテレメトリを収集しています。
-
使用状況の情報— エージェントのコマンド、インストール方法、スケジュールされた実行頻度。
-
エラーと診断情報— エージェントのインストールと実行エラーコード。
収集されるデータの例:
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsUserDataScheduledPerBoot=true
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandCode=1
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandErrorCode=5
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallCode=2
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallErrorCode=0
テレメトリーはデフォルトでは有効になっています。テレメトリ収集はいつでも無効にできます。テレメトリが有効な場合、EC2Launch は、追加の顧客通知なしでテレメトリデータを送信します。
テレメトリを有効または無効にするかの選択が収集されます。
テレメトリの収集は、オプトインまたはオプトアウトできます。テレメトリのオプトインまたはオプトアウトの選択は、ユーザーのテレメトリオプションを確実に遵守するために収集されます。
テレメトリー可視性
テレメトリが有効な場合、Amazon EC2 コンソールの出力に次のように表示されます。
2021/07/15 21:44:12Z: Telemetry: <Data>
インスタンスでのテレメトリの無効化
システム環境変数を設定してテレメトリを無効にするには、管理者として次のコマンドを実行します。
setx /M EC2LAUNCH_TELEMETRY 0
インストール中にテレメトリを無効にするには、次のように install.ps1
を実行します。
. .\install.ps1 -EnableTelemetry:$false
EC2Launch のバージョンを確認します。
インストールされている EC2Launch のバージョンを確認するには、次の Windows PowerShell コマンドを使用します。
Test-ModuleManifest -Path "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" | Select Version
EC2Launch のディレクトリ構造
EC2Launch はデフォルトでは、Windows Server 2016 以降の AMI のルートディレクトリ C:\ProgramData\Amazon\EC2-Windows\Launch
にインストールされます。
注記
Windows では、デフォルトで C:\ProgramData
以下のファイルとフォルダは非表示になります。EC2Launch のディレクトリとファイルを表示するには、Windows エクスプローラーにパスを入力するか、フォルダのプロパティを変更して、非表示のファイルとフォルダを表示する必要があります。
Launch
ディレクトリには以下のサブディレクトリがあります。
-
Scripts
— EC2Launch を構成する PowerShell スクリプトが格納されます。 -
Module
— Amazon EC2 関連するスクリプトを構築するためのモジュールが格納されます。 -
Config
— カスタマイズ可能なスクリプト設定ファイルが格納されます。 -
Sysprep
— Sysprep リソースが格納されます。 -
Settings
— Sysprep グラフィカルユーザーインターフェイスのアプリケーションが格納されます。 -
Library
- EC2 起動エージェントの共有ライブラリが含まれています。 -
Logs
— スクリプトによって生成されたログファイルが格納されます。
EC2Launch の設定
インスタンスが最初に初期化された後で、EC2Launch を再実行し、別の起動タスクを実行するよう EC2Launch を設定できます。
タスク
初期化タスクの設定
次の初期化タスクを有効または無効にするには、LaunchConfig.json
ファイルで設定を指定します。
-
コンピュータ名をインスタンスのプライベート IPv4 アドレスに設定します。
-
モニターを常にオンにするように設定します。
-
新しい壁紙を設定します。
-
DNS サフィックス一覧を追加します。
注記
これにより、次のドメインの DNS サフィックス検索が追加され、他の標準サフィックスが設定されます。起動エージェントによる DNS サフィックスの設定方法の詳細については、「Windows 起動エージェントの DNS サフィックスを設定する」を参照してください。
region
.ec2-utilities.amazonaws.com -
ブートボリュームサイズを拡大します。
-
管理者パスワードを設定します。
初期設定を行うには
-
設定するインスタンスで、
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json
ファイルをテキストエディタで開きます。 -
必要に応じて次の設定を更新し、変更を保存します。
adminPasswordtype
がSpecify
である場合のみ、adminPassword
にパスワードを入力します。{ "setComputerName": false, "setMonitorAlwaysOn": true, "setWallpaper": true, "addDnsSuffixList": true, "extendBootVolumeSize": true, "handleUserData": true, "adminPasswordType": "Random | Specify | DoNothing", "adminPassword": "password that adheres to your security policy (optional)" }
パスワードの種類は次のとおりです。
Random
-
EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
Specify
-
EC2Launch は、
adminPassword
で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとしてLaunchConfig.json
に保存され、Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。 DoNothing
-
EC2Launch は、
unattend.xml
ファイルで指定したパスワードを使用します。unattend.xml
でパスワードを指定しない場合、管理者アカウントは無効になります。
-
Windows PowerShell で次のコマンドを実行し、Windows のスケジュールされたタスクとしてスクリプトの実行をスケジュールします。スクリプトは次回の起動時に 1 回のみ実行され、以降、これらのタスクは再実行されなくなります。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
EC2Launch が起動ごとに実行されるようスケジュールします
最初の起動だけでなく、起動ごとに実行されるように EC2Launch をスケジュールすることができます。
EC2Launch を起動ごとに実行するには。
Windows PowerShell を開き、次のコマンドを実行します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
または、次のコマンドを使用して、実行可能ファイルを実行します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe
次に、
Run EC2Launch on every boot
を選択します。You can specify that your EC2 インスタンスをShutdown without Sysprep
またはShutdown with Sysprep
に指定できます。
注記
起動のたびに EC2Launch が実行されるように設定した場合は、次回 EC2Launch が実行される際に以下のことが行われます。
-
依然として
AdminPasswordType
にRandom
が設定されている場合、EC2Launch は次の起動時に新しいパスワードを生成します。起動後、AdminPasswordType
は自動的にDoNothing
に設定されます。これにより、以後の起動時に EC2Launch が新しいパスワードを生成しないようにします。EC2Launch が初回起動時に新しいパスワードを生成しないようにするには、再起動する前に、AdminPasswordType
にDoNothing
を手動で設定します。 -
ユーザーデータの
HandleUserData
がfalse
に設定されていない限り、persist
はtrue
に設定されます。詳細については、「ユーザーデータスクリプト」を参照してください。
ドライブの初期化とドライブ文字のマッピング
ドライブ文字を EC2 インスタンスのボリュームにマッピングするには、DriveLetterMappingConfig.json
ファイルで設定を指定します。このスクリプトは、初期化およびパーティション化されていないドライブを初期化します。Windows でボリュームの詳細を取得する方法について詳しくは、Microsoft のドキュメントの「Get-Volume
ドライブ文字をボリュームにマッピングするには
-
テキストエディタで
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json
ファイルを開きます。 -
次のボリューム設定を指定し、変更を保存します。
{ "driveLetterMapping": [ { "volumeName": "
sample volume
", "driveLetter": "H
" } ] } -
Windows PowerShell を開き、次のコマンドを使用して、ディスクを初期化する EC2Launch スクリプトを実行します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
インスタンスが起動するたびにディスクを初期化するには、
-Schedule
フラグを次のように追加します。C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule
EC2 コンソールへの Windows イベントログの送信
EC2 コンソールログに Windows イベントログを送信するには、EventLogConfig.json
ファイルで設定を指定します。
Windows イベントログを送信するよう設定を指定するには
-
インスタンスで、
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json
ファイルをテキストエディタで開きます。 -
次のログ設定を行い、変更を保存します。
{ "events": [ { "logName": "
System
", "source": "An event source (optional)
", "level": "Error | Warning | Information
", "numEntries":3
} ] } -
Windows PowerShell で次のコマンドを実行し、Windows のスケジュールされたタスクとして、インスタンスが起動されるたびにスクリプトの実行がスケジュールされるようにします。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule
ログが EC2 コンソールログに表示されるまでには、3 分以上かかる場合があります。
正常に起動した後の Windows の準備が完了した旨のメッセージの送信
EC2Config サービスは、起動するたびに、Windows の準備が完了した旨のメッセージを EC2 コンソールに送信しました。EC2Launch は最初の起動後に、このメッセージを送信します。EC2Config サービスとの下位互換性のため、毎回の起動後にこのメッセージを送信するよう EC2Launch をスケジュールできます。インスタンスで Windows PowerShell を開き、次のコマンドを実行します。システムは、Windows のスケジュールされたタスクとして実行するようスクリプトをスケジュールします。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule