インスタンスを再起動または起動するときに、既存の Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスでカスタムスクリプトを実行したいと考えています。
簡単な説明
ユーザーデータにスクリプトを追加し、インスタンスの再起動後またはインスタンスの起動時に実行するように設定します。EC2Config (Windows Server 2012 R2 以前)、EC2Launch (Windows Server 2016 と 2019)、または EC2LaunchV2 (Windows Server 2022) はユーザーデータを処理します。
解決策
スクリプトをユーザーデータに追加するときは、それを特別なタグで囲む必要があります。このタグによって、コマンドがコマンドプロンプトウィンドウで実行されるか Windows PowerShell で実行されるかが決定します。詳細については、「起動時に Windows インスタンスでコマンドを実行する」を参照してください。
インスタンスの実行中はユーザーデータを追加または変更することはできませんが、表示することはできます。ユーザーデータを追加または変更するには、インスタンスが停止状態である必要があります。ユーザーデータスクリプトは、インスタンスを再起動または起動しても自動的には実行されません。次回、またはインスタンスを再起動または起動するたびにユーザーデータを実行するように設定できます。
重要:
-
EC2 Windows インスタンスに接続します。
-
Windows Server 2012 R2 以前の場合は、C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSetting.exe を開きます。次に、[User Data] (ユーザーデータ) で [Enable UserData execution for next service start] (次のサービス開始のために UserData の実行を有効にする) を選択します。
注:上記のコマンドは、再起動するたびにインスタンスのローカル管理者パスワードを変更します。[No Key Pair] (キーペアなし) オプションを選択して AMI を使用すると、再起動時にインスタンスにアクセスできなくなる可能性があります。
Windows Server 2016 と 2019 の場合は、Windows PowerShell コマンドウィンドウを開き、次のコマンドを実行します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
Windows Server 2022 では、UserData をスクリプトとして実行し、起動のたびに常に実行されるように頻度を設定します。詳細については、executeScripts の構文と例を参照してください。
-
Amazon EC2 コンソールから、インスタンスを停止します。
-
インスタンスを選択して [アクション] を選択します。次に、[インスタンス設定] を選択し、[ユーザーデータの編集] を選択します。
-
ユーザーデータを追加または更新し、[保存] を選択します。
注: インスタンスを再起動または再起動するたびにユーザーデータスクリプトを実行するには、次の設定を追加します。
<persist>true</persist>
- インスタンスを起動します。ユーザーデータスクリプトは、インスタンス起動プロセスの一部として実行されます。
その他のトラブルシューティングとして、EC2Config、EC2Launch、EC2LaunchV2 のログファイルには、標準出力と標準エラーストリームが含まれています。ログファイルは次の場所にあります。
- EC2Config: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log
- EC2Launch: C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
- EC2LaunchV2: C:\ProgramData\Amazon\EC2Launch\log\agent.log
関連情報
起動時に新しい EC2 Windows インスタンスでコマンドを実行する方法を教えてください。