(1)ログ確認
Windowsの場合、ユーザデータのスクリプトの実行結果、<persist>,<script>,<powershell> の認識結果のログは以下に出力されています。
構文誤りも以下のログに出力されます。
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
Windowsの場合以下にユーザデータのログが記録されています。内容を確認します。
C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log
あるいは
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
ただしユーザデータに書式ミスがありスクリプトと認識されなかった場合はログファイルにはエラーは出力されなかった。(実験結果)
(2)スクリプトの確認
正しくユーザデータのスクリプトが認識されているか、あるいはユーザデータからではなくコンソールから実行可能か確認します。
スクリプトはEC2インスタンス側の以下のフォルダに保存されています。
C:\Windows\Temp\UserScript.ps1
(3)AMI作成
今のところ管理コンソールからユーザデータを変更してスクリプトを実行させる方法は見つからなかった。
AMIを新規に作成して新しいインスタンスとして実行するなど。
(4)Sysprep
sysprep 実行後にスナップショットを取得しAMIを生成する。
ユーザデータでのIPアドレスの変更
ユーザデータ内ではホスト名を変更したりWindows AD にログインしたりは可能なようですが、原則としてIPアドレスへ変更できません。
例えば Powershell の New-NetIPAddressで変更すると AWS Management Console では起動時の接続チェックでエラーとなる。
ログファイル
参考まで、初回に正常にスクリプトが実行されるとEc2Config.log や Ec2Launch.log に以下のようなログが記録されている。
2018/05/25 03:39:55Z: Userdata execution begins
2018/05/25 03:39:56Z: Zero or more than one <persist> tag was not provided
2018/05/25 03:39:56Z: Unregistering the persist scheduled task
2018/05/25 03:40:05Z: Zero or more than one <runAsLocalSystem> tag was not provided
2018/05/25 03:40:05Z: Zero or more than one <script> tag was not provided
2018/05/25 03:40:05Z: Zero or more than one <powershellArguments> tag was not provided
2018/05/25 03:40:05Z: <powershell> tag was provided.. running powershell content
2018/05/25 03:42:43Z: Userdata: is currently executing. To end it kill the process with id: 1564
2018/05/25 04:16:34Z: Userdata execution begins
2018/05/25 04:16:34Z: Failed to get metadata: The result from http://169.254.169.254/latest/user-data was empty
2018/05/25 04:16:37Z: Unable to execute userdata: Userdata was not provided
2018/05/25 04:16:37Z: Userdata execution done
【超重要】本ページは情報が古くなっている可能性があります。参考程度にしてください。
[ 一覧に戻る]
【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。