📝

[小ネタ] 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 回/秒でした
  • CreateLogStream throttle limit in transactions per second

    • ログストリームの作成は 50 回/秒でした
  • PutLogEvents throttle limit in transactions per second

    • ログの出力は 5,000 回/秒でした

CloudWatch Logs のクォータについてはドキュメントもご参照ください。
CloudWatch Logs quotas - Amazon CloudWatch Logs

おまけ

Lambda のログが出力されない場合の一般的なトラブルシューティングは以下のナレッジセンターにまとまっています。
CloudWatch で Lambda ログの「ロググループがありません」というエラーを修正する | AWS re:Post

また、以下のブログでは CMK が原因であることを検証しています。
Lambda 実行時にログストリームは作成されるのにログが出力されない時の解決策

まとめ

今回は Lambda のログはドロップされることがあるという仕様を紹介しました。
どなたかの参考になれば幸いです。

参考資料

Discussion