この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
SAM (Serverless Application Model)でアプリケーションを作成しています。
SAM CLI を利用してビルドやデプロイを実行していますが、エラーが発生します。
トラブルシューティングを行うためにサポートや SAM CLI の GitHub Issues で問い合わせを行う際に、デバッグログの提出を求められております。
どうやって出力すればよいでしょうか。
どう対応すればいいの?
SAM CLI のコマンドの引数に --debug
を指定して実行してください。
このフラグによって、デバッグメッセージが出力表示され、同時にタイムスタンプも表示されます。
サポートへの調査依頼や 公式の GitHub Issues でのバグ報告などの際に、詳細なログとして利用できる有効な手段となります。
デバッグログ出力の指定方法
以下のコマンドで、 --debug
の指定方法を確認できます。
$ sam --help
Usage: sam [OPTIONS] COMMAND [ARGS]...
AWS Serverless Application Model (SAM) CLI
-- 省略 --
Options:
--debug Turn on debug logging to print debug message generated by SAM
CLI and display timestamps.
-- 省略 --
Commands:
init Init an AWS SAM application.
validate Validate an AWS SAM template.
build Build your Lambda function code
-- 省略 --
シンプルな方法
SAM で作成したアプリケーションのビルドを実行する場合は、以下の様にします。
なお、ここで利用したコマンドは例の一つですので、実行するコマンドによって読み替えてください。
使用方法:
$ sam build --debug
出力結果は以下のようになります。
出力結果:
2022-04-14 16:48:05,353 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics
2022-04-14 16:48:05,353 | Using config file: samconfig.toml, config environment: default
2022-04-14 16:48:05,353 | Expand command line arguments to:
-- 以下、省略 --
ログファイルとして出力する方法
以下の様に、標準出力と標準エラー出力を tee コマンドへパイプでつなぐことで、実行結果がファイルとして出力されます。
使用方法:
$ sam build --debug 2>&1 | tee result.txt
出力結果:
$ sam build --debug 2>&1 | tee result.txt
2022-04-14 16:52:01,346 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics
2022-04-14 16:52:01,347 | Using config file: samconfig.toml, config environment: default
2022-04-14 16:52:01,347 | Expand command line arguments to:
-- 以下、省略 --
$ cat result.txt | head -n 3
2022-04-14 16:52:01,346 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics
2022-04-14 16:52:01,347 | Using config file: samconfig.toml, config environment: default
2022-04-14 16:52:01,347 | Expand command line arguments to: