Lambda@Edge 関数のログが見つからないときの対処方法

2021.05.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Lambda@Edge をバージニア北部(us-east-1)リージョンにデプロイしましたが、ログが CloudWatch Logs へ出力されないです。

正常にログを出力させる方法を教えてください。

どう対応すればいいの?

Lambda@Edge のログは CloudWatch Logs へ出力されますが、関数が実行される場所にもっとも近いリージョンに保存されます。

日本から CloudFront へリクエストを送信した場合、ログは東京リージョンに作成された可能性が高いです。まずは東京リージョンの CloudWatch Logs でロググループを確認してみてください。

ロググループは以下の形式で出力されます。

/aws/cloudfront/LambdaEdge/DistributionId

CloudWatch Logs コンソールのロググループで /aws/cloudfront/LambdaEdge/ と入力すれば、Lambda@Edge のロググループのみ検索できます。

もちろんディストリビューション ID で直接ロググループを検索することも可能です。(CloudWatch Logs コンソールの検索機能は以前より向上しています。)

どこで呼び出されたかわからないときは?

クライアント(ビューワー)がどの場所からアクセスしたか不明なときは、CloudFront コンソールの Monitoring からどのリージョンの Lambda@Edge が呼び出されたかを確認してください。

以下の順番に操作することで確認ができます。

参考資料

注記

エラーをトラブルシューティングするときに CloudWatch ログファイルまたはメトリクスを確認する場合は、関数が実行される場所に最も近いリージョンに表示または保存されていることに注意してください。したがって、例えば英国のユーザーがいるウェブサイトまたはウェブアプリケーションで、ディストリビューションに関連する Lambda 関数がある場合は、リージョンを変更してロンドン AWS リージョンの CloudWatch メトリクスまたはログファイルを表示する必要があります。詳細については、このトピックの後半の「Lambda@Edge リージョンの判別」を参照してください。