自分自身もハマりましたが、周りでも同じような声を聞くので手順を展開しておきます。
Lambdaを利用していて、イベントソースによりちゃんと発火したかどうか、Cloud Watch Logsを確認することが多いと思います。
ただし、このログ、出力されないことがあるんじゃないか?との声をたまに聞きます。
そんなときにチェックする方法を紹介いたします。
まずは最初に。。。
本当に実行されたのか? CloudWatchから「Invocation count」を確認します。
まぁここは大丈夫かと思いますが、念のため。
Cloud Watch Logsを見るときの落とし穴
次にCloud Watch Logsを見ますが、この時に見落としが発生することが多いです。
ストリーム内には複数ページのログが出力されていることがあります。 同じような出力内容が続き、一見、末端まで見たかなと思っても、 ページ送りをポチポチすると、目的のログが出てくることがあります。
しかし見づらい(´Д`)
そんなわけで、ローカル環境(mac)にログをダウンロードして、目的のログを探すことにします。
ローカル環境でログを確認する手順
S3へエクスポート
まずは、Cloud Watch LogsをS3にエクスポートします。
エクスポートはロググループ単位で行うことができます。 期間やプレフィックスで絞り込むことも可能です。
出力先のS3のバケットは事前に準備ください。
S3からダウンロード
エクスポートしたログは現物さながら、ストリーム単位でフォルダ階層化されています。
マネジメントコンソールからペチペチとダウンロードするのは至極面倒なので、CLIを使ってダウンロードしちゃいます。
$ aws s3 --profile hoge cp s3://fuga ~/Documents/temp/ --recursive
ダウンロードしたファイルから検索
落としてきたログファイル群から、特定のキーワードで検索します。
find ~/Documents/temp/exportedlogs -type f -name "*.gz" | xargs gunzip -c | grep piyo
上記の手順は、Lambdaログに限らず有効です。
Cloud Watch Logsを探りたい時にお試しください。