Ec2の「user-data」スクリプトログを取得して、Windowsのシステムログに転送しようとしています。 Linuxでは、誰かがすでに解決策を見つけています: http://alestic.com/2010/12/ec2-user-data-output
基本的には、/ var/log /user-data.logをシステムログにティーします。 Windowsインスタンスでそれを行う方法を知っておく必要があります。 Windowsインスタンスでuser-data.logが見つかりませんでした。
C:\ CFN\LOG\cfn-init.logを調べてみましたか?これは通常、CFNユーザーデータログを取得する場所です。
とその周辺にも役立つ情報があります
C:\ Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt
参照: http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/cfn-windows-stacks-bootstrapping.html
この質問への回答にあるパスのいくつかは、2019年7月の時点で古くなっています。C:\ ProgramFiles\Amazon\Ec2ConfigServiceもC:\ CFNもありません(少なくとも私にとっては、CFNを使用していません。それが重要な場合のプロビジョニング)
最初は、C:\ ProgramData\Amazon \の場所も古くなっていると思いましたが、WindowsではProgramDataがhiddenであり、デフォルトでは隠しファイルが表示されないことを忘れていました。 Windowsをインストールするたびに、「隠しファイルを表示する」という選択を設定する必要があることを覚えていますか?ここでそれを忘れました。
したがって、Windowsユーザーデータログare in _C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
_
また、それが役立つ場合は、Userdataスクリプト自体(インスタンスに提示されるpost-any-provisioning-templating)は_C:\Windows\Temp\UserScript.ps1
_にあります。
ただし、PowerShell関数「Start-Transcript」を使用して独自のログを簡単に作成するというtarvinder91の2番目の推奨事項を示したいと思います。カスタムパスを設定し、スクリプトの先頭に_Start-Transcript -Path "C:\UserData.log" -Append
_のように追加できます。このようにして、ログの保存先を制御でき、ログを保存するようにAMIがどのように構成されているかを気にする必要はありません。
これを見つけてまだ探している人は、ProgramDataを調べてみてください。そこには、起動に関する詳細情報を提供するログファイルがいくつかあります。
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
クラウド/サービスの標準ログに実際に依存する必要はありません。最初にPowerShellコードでstart-transcript
を使用するだけです。このコマンドが管理者プロファイルから実行された場合、またはスクリプトを実行しているユーザープロファイルに従って他の場所で実行された場合、通常はすべてのログがC:\Users\Administrators\Documents
に保存されます。
ユーザーデータの実行専用のログファイルがあり、エラーが発生したことを示していますが、エラーが何であるかを示していません。したがって、解決策は(ops-codeが何かを改善するまで)、出力をファイルに送信し、そのファイルを解析してエラーの詳細を報告したり、デバッグに役立てたりできるようにユーザーデータコードを記述することです。