[トップページ] [FAQ 一覧]

対象:EC2 Launch

EC2Launch まとめ





"EC2 Launch"の調査事項をまとめています。最終更新日:2019/2/5


(1)EC2インスタンス初回起動時のみ実行される
(2)PowerShellベース。プログラムの場所は以下の通り。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -File "C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1"


(3)Windows Server 2012時代は「EC2Config」という名前だった。Windows Server 2016 では EC2Launch
(4)Linux では Cloud-init
(5)以下のような初回起動時のみ必要な設定を行う。

・コンピュータ名設定(iPアドレスを使用した名前など)
・壁紙の設定
・ブートボリュームの拡張
・DNS Suffixの追加(Add DNS suffix list)
以下のようなサフィックスの設定が追加されます。

EC2Launch で AWS のDNSサフィックスを追加



この場合元のWindowsの「プライマリサフィックス」は設定されませんが(引き継がれませんが)、sysprep後では「元のWindowsのプライマリサフィックス」は「sysprep後のWindowsのサフィックスの検索」に追加されていました。(2019/8確認)


・administratorの初期パスワードの設定(ランダム、指定した固定など)
・ユーザデータの実行

(6)ユーザデータ内のスクリプトを実行することが可能
ユーザデータに<script> </script>で囲うとスクリプトが一度だけ実行される。
Powershellで記述する場合は <script> </script> の代わりに<powershell> </powershell>で囲う。
AWS Tools for Windows PowerShell を使用することも可能。

(7)<persist>true</persist>を指定すると毎回起動時に実行される。
(8)sysprep を実行した AMI でないと、ユーザデータ内のコードは実行されない。

参考:ユーザデータが実行されない場合に確認する事項

とても分かり易いサンプルコードが掲載されています。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html

<powershell>
$file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
New-Item $file -ItemType file
</powershell>
<persist>true</persist>


・メニューからGUIでも設定が可能。
メニュー→Ec2LaunchSettings

・マスターAMI作成のため、EC2Launchからsysprepを実行してその後シャットダウンすることも可能。

ログファイル


ログファイルは以下に保存されています。

C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.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




EC2Launch による初期化のログは以下に記録されています。

C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log

ホスト名が変更されない、管理者のパスワードが変更されない、DNS Suffix が設定されないなど基本事項に不具合がある場合は確認してください。

【超重要】本ページは2019/08/22に記載されました。情報が古くなっている可能性があります。








[ 一覧に戻る]


【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。