pict3の日記

AWSネタを中心に

AWS LambdaのログがCloudWatchLogsに出力されない(?)【cloudpack大阪BLOG】

f:id:pict3:20160217201721j:plain

自分自身もハマりましたが、周りでも同じような声を聞くので手順を展開しておきます。

Lambdaを利用していて、イベントソースによりちゃんと発火したかどうか、Cloud Watch Logsを確認することが多いと思います。

ただし、このログ、出力されないことがあるんじゃないか?との声をたまに聞きます。

そんなときにチェックする方法を紹介いたします。

まずは最初に。。。

本当に実行されたのか? CloudWatchから「Invocation count」を確認します。

まぁここは大丈夫かと思いますが、念のため。 f:id:pict3:20160217214301j:plain

Cloud Watch Logsを見るときの落とし穴

次にCloud Watch Logsを見ますが、この時に見落としが発生することが多いです。

ストリーム内には複数ページのログが出力されていることがあります。 同じような出力内容が続き、一見、末端まで見たかなと思っても、 ページ送りをポチポチすると、目的のログが出てくることがあります。 f:id:pict3:20160217214433j:plain

しかし見づらい(´Д`)

そんなわけで、ローカル環境(mac)にログをダウンロードして、目的のログを探すことにします。

ローカル環境でログを確認する手順

S3へエクスポート

まずは、Cloud Watch LogsをS3にエクスポートします。

エクスポートはロググループ単位で行うことができます。 期間やプレフィックスで絞り込むことも可能です。

出力先のS3のバケットは事前に準備ください。

f:id:pict3:20160217215315j:plain

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を探りたい時にお試しください。