AWS SAM CLI のトラブルシューティング時に詳細なデバッグログを出力する方法を教えてください

この記事は公開されてから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:

参考資料