[小ネタ] Lambda のログはドロップされることがある
Troubleshoot execution issues in Lambda - AWS Lambda
If your function outputs logs at too high a rate for Lambda to process them, this can also cause log outputs not to appear in CloudWatch Logs.
Lambda が CloudWatch Logs にログを出力できる権限があるにもかかわらずログが出力されないケースがあるとのことです。
ログ出力されない可能性があるケースは以下の通りです。
- ログ出力頻度が高すぎる
- 1 つのログストリームで 2 MB/秒を超える
- CloudWatch Logs のクォータ制限に達する
3 つ目については Service Quotas コンソールで以下のクォータを確認できるようです。
- CreateLogGroup throttle limit in transactions per second
- CreateLogStream throttle limit in transactions per second
- PutLogEvents throttle limit in transactions per second
クォータを確認してみた
コンソールから確認してみました。
-
CreateLogGroup throttle limit in transactions per second
- ロググループの作成は 10 回/秒でした
- ロググループの作成は 10 回/秒でした
-
CreateLogStream throttle limit in transactions per second
- ログストリームの作成は 50 回/秒でした
- ログストリームの作成は 50 回/秒でした
-
PutLogEvents throttle limit in transactions per second
- ログの出力は 5,000 回/秒でした
- ログの出力は 5,000 回/秒でした
CloudWatch Logs のクォータについてはドキュメントもご参照ください。
CloudWatch Logs quotas - Amazon CloudWatch Logs
おまけ
Lambda のログが出力されない場合の一般的なトラブルシューティングは以下のナレッジセンターにまとまっています。
CloudWatch で Lambda ログの「ロググループがありません」というエラーを修正する | AWS re:Post
また、以下のブログでは CMK が原因であることを検証しています。
Lambda 実行時にログストリームは作成されるのにログが出力されない時の解決策
まとめ
今回は Lambda のログはドロップされることがあるという仕様を紹介しました。
どなたかの参考になれば幸いです。
Discussion