LoginSignup
78
70

More than 5 years have passed since last update.

AWS Lambdaのデバッグ方法

Posted at

概要

AWS Lambdaのデバッグ方法をまとめる。
※この記事ではNode.jsの利用を想定。

コード上でログを出力する(基本)

以下のメソッドが利用出来る。

  • console.log()
  • console.error()
  • console.warn()
  • console.info()

出力されたログはLambdaコンソールの[Log output]に出力される。

ログ出力基本
console.log("🐱");

🐱が出ている事が確認出来るかと思う↓

log1.png

このあたりは公式ドキュメントにも記載されている基本的な内容。

出力したログをCloudWatchで確認する

LambdaはCloudWatchにもログを書き込むようになっている。
console.logで出力したログはCloudWatchでも確認出来る。

CloudWatchの管理画面から、ログ → /aws/lambda/{lambda関数名}/{ログストリーム} とページ遷移していくとログが確認出来る。

/aws/lambda/{lambda関数名}という部分がCloudWatchのロググループ名となる。
私の場合「customAuthorize」という名前の関数を定義していたので、ロググループ名は「/aws/lambda/customAuthorize」となる。

ログストリームに関しては見た感じLambda関数の実行毎に作られるようだった。

ちなみに、この2つはLambdaのcontextオブジェクトの中に情報があるので以下のコードで取得出来る。

ロググループとログストリームの確認
// ロググループ名
console.log(context.logGroupName);
// ログストリーム名
console.log(context.logStreamName);

それぞれ下記のように出力されていたので、ログ → /aws/lambda//aws/lambda/customAuthorize/2016/12/14/[$LATEST]26b5469427e449349dbda15096c88e0b にアクセスすれば該当リクエストのログを確認出来る。

  • console.log(context.logGroupName)
    • /aws/lambda/customAuthorize
  • console.log(context.logStreamName)
    • 2016/12/14/[$LATEST]26b5469427e449349dbda15096c88e0b

log3.png

何度実行してもCloudWatchにログが出力されない場合

公式のトラブルシューティングにも記載されているが、Lambda関数の実行ロールでログデータをCloudWatch Logsに書き込むアクセス権限が付与されていない可能性がある。

※少なくもとポリシーが以下のように設定されている必要がある。

ポリシードキュメント
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}

おまけ(オブジェクトの中身の詳細を表示する)

エラー発生時のerrorオブジェクトの中身を詳細に見たい時はutil.inspect()を利用する。
※これはLambdaの話というよりは、Node.jsの話。

utilのロード
const util = require('util');
util.inspect()利用
console.log("🐱" + util.inspect(error, false, null));

上記のようにログ出力するとCloudWatchのログ上に詳細な"error"の中身が表示される。

log4.png

78
70
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
70