AWS
lambda

AWS LambdaのログがCloudWatchに書き込まれなくなった時の解決方法

ちょっと今更ですがAWS Lambdaを使ってみました。

使い方、作り方は他の方が書いてるページの方が色々詳しく書いてありますので、今回躓いてなおかつ調べてもあまり出てこなかった内容に関して記載します。

Cloud Watchにログが書き込まれなくなった

問題

Lambda関数を作成すると、自動でCloudWatchにログを溜めていってくれます。そして、Lambdaの管理画面上で「テスト」ボタンを押して実行した場合には以下のようにそのログへのリンクが出現し、実際にどう流れたかも見ることができます(そもそも管理画面上でも確認可能です)。

スクリーンショット 2017-12-28 15.08.38.png

ただ、関数を作ったり消したりと色々やっていたらいつの間にか「ログ」のリンクをクリックしても以下のようなエラー文言が出るようになってしまった。

ログストリームのロード中にエラーが発生しました。このページを更新して、再試行してください。

解決法

上記にある通り、開発時には管理画面で見れるのであまり気にしてなかったのですが、やはり公開するとなると外部からのリクエストが何だったのか見たいし、何より気持ち悪いので調べることに。

調べた所基本的に、Cloud WatchにはIAMのロールがちゃんと設定されていれば書き込まれるらしい。ということで、IAMロールを確認すると、書き込み先のリソースが固定になっていた。

書いている時点で、どうやって最初始めたかかなりうろ覚えですが、最初に始める時にロールの作成をLambda上で行った。確かこんな感じ。
スクリーンショット 2017-12-28 15.14.33.png

この際勝手にロールを作ってくれるのですが、どうやらその時に生成されるのはその時に作ったLambda関数のロググループへの書き込みのみになるようです。よって、ロールをLambdaから作った際は気をつけたほうが良さそうです。

また、上記のロールの内容変更を行う前に、Lambda関数のページを表示していた場合、リロードだけではCloudWatch上にロググループは自動的に作成されません。一度ページを閉じて、改めてLambda関数のページを開くと作成されます。