インスタンスを再起動または起動するときに、既存の EC2 Windows インスタンスでコマンドを実行する方法を教えてください。
最終更新日: 2021 年 4 月 9 日
インスタンスを再起動または起動するときに、既存の Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスでカスタムスクリプトを実行したいです。どうすればよいですか?
簡単な説明
インスタンスを再起動または起動した後にスクリプトを実行するには、スクリプトをユーザーデータに追加します。ユーザーデータは EC2Config (Windows Server 2012 R2 以前) または EC2Launch (Windows Server 2016 以降) によって処理されます。
解決方法
スクリプトをユーザーデータに追加するときは、特別なタグで囲む必要があります。このタグで、コマンドがコマンドプロンプトウィンドウで実行されるか、Windows PowerShell で実行されるかが決まります。詳細については、Windows インスタンスでの起動時のコマンドの実行をご参照ください。
インスタンスが実行中の場合、ユーザーデータを追加または変更することはできませんが、表示することはできます。ユーザーデータを追加または変更するには、インスタンスが停止状態である必要があります。インスタンスの再起動時または起動時に、ユーザーデータスクリプトは自動的に実行されません。次回、またはインスタンスを再起動または起動するたびに、ユーザーデータの実行を有効にすることができます。
警告: インスタンスを停止する前に、以下の点に注意してください。
- Elastic IP アドレスを使用していない場合は、インスタンスを停止するとパブリック IP アドレスが解放されます。
- このインスタンスにインスタンスストアボリュームがある場合、インスタンスが停止すると、そのインスタンスのデータはすべて失われます。
- インスタンスのシャットダウン動作が [Terminate] (終了) に設定されている場合、インスタンスは停止時に終了します。
- インスタンスが Auto Scaling グループの一部である場合は、まず Auto Scaling グループからインスタンスをデタッチします。その後、インスタンスを停止して起動したら、インスタンスを Auto Scaling グループにアタッチし直します。
詳細については、インスタンスの停止と起動をご参照ください。
2. Windows Server 2016 以降の場合、Windows PowerShell コマンドウィンドウを開き、次のコマンドを実行します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
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 を使用している場合、再起動時にインスタンスにアクセスできなくなる可能性があります。
3. Amazon EC2 コンソールでインスタンスを停止します。
4. インスタンスを選択します。その後、[Actions] (アクション)、[Instance Settings] (インスタンス設定)、[Edit user data] (ユーザーデータを編集) の順に選択します。
5. ユーザーデータを追加または更新し、 [Save] (保存) を選択します。
注: インスタンスを再起動または再開するたびにユーザーデータスクリプトを実行するには、以下を追加してください。
<persist>true</persist>
6. インスタンスを起動します。ユーザーデータスクリプトは、インスタンス起動プロセスの一部として実行されます。
追加のトラブルシューティングを行うために、EC2Launch と EC2Config ログファイルには、標準出力と標準エラーストリームからの出力が含まれます。ログファイルは次のように配置されます。
- EC2Launch: C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
- EC2Config: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log