エッジ関数のログ - Amazon CloudFront

エッジ関数のログ

Amazon CloudWatch Logs を使用して、Lambda@EdgeCloudFront Functions の両方で、エッジ関数のログを取得できます。ログにアクセスするには、CloudWatch コンソールまたは CloudWatch Logs API を使用できます。

重要

ログは、すべてのリクエストを完全に課金するためのものではなく、コンテンツに対するリクエストの本質を把握するものとして使用することをお勧めします。CloudFront はベストエフォートベースでエッジ関数のログを提供します。特定のリクエストのログエントリが、リクエストが実際に処理されてからかなり後に配信されることも、(まれに) 一切配信されないこともあります。ログエントリをエッジ関数のログから省略すると、エッジ関数のログ内のエントリ数は AWS の請求と使用状況レポートに表示される使用量と一致しなくなります。

Lambda@Edge のログ

Lambda@Edge は、関数ログを CloudWatch Logs に自動的に送信し、関数が実行される AWS リージョン にログストリームを作成します。ロググループ名は /aws/lambda/us-east-1.function-name として書式化されます。ここで、function-name は、作成時に関数に付けた名前であり、us-east-1 は、関数が作成された AWS リージョン のリージョンコードです。関数が実行される他のリージョンのロググループであっても、ロググループ名には常に us-east-1 が含まれます。

注記

Lambda@Edge は、リクエストのボリュームとログのサイズに基づいてログを調整します。

Lambda@Edge 関数ログファイルを確認するには、正しい AWS リージョン で CloudWatch ログファイルを確認する必要があります。Lambda@Edge 関数が実行されているリージョンを確認するには、CloudFront コンソールでその関数のメトリクスのグラフを表示します。メトリクスは AWS リージョン ごとに表示されます。同じページで、リージョンを選択してそのリージョンのログファイルを表示し、問題を調査することができます。

Lambda@Edge 関数で CloudWatch Logs を使用する方法の詳細については、以下を参照してください。

CloudFront Functions のログ

CloudFront 関数のコードに console.log() ステートメントが含まれている場合、CloudFront Functions はこれらのログ行を CloudWatch Logs に自動的に送信します。console.log() ステートメントがない場合、CloudWatch Logs には何も送信されません。

CloudFront Functions は、関数が実行されたエッジロケーションに関係なく、常に米国東部 (バージニア北部) リージョン (us-east-1) にログストリームを作成します。ロググループ名の形式は/aws/cloudfront/function/FunctionNameFunctionName は関数を作成したときに指定した名前です。ログストリーム名の形式は YYYY/M/D/UUID です。

CloudWatch Logs に送信されるログメッセージの例を次に示します。各行は、CloudFront リクエストを一意に識別する ID で始まります。メッセージは、CloudFront ディストリビューション ID を含む START 行で始まり、END 行で終わります。START 行と END 行の間には、関数の console.log() ステートメントによって生成されるログ行があります。

U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
注記

CloudFront Functions は、本番リクエストとレスポンスに応答して実行されるステージ LIVE の関数のみ、ログを CloudWatch に送信します。関数をテストするとき、CloudFront は CloudWatch にログを送信しません。テスト出力には、エラー、コンピューティング使用率、関数ログ (console.log() ステートメント) に関する情報が含まれていますが、この情報は CloudWatch に送信されません。

CloudFront Functions は、AWS Identity and Access Management (IAM) サービスリンクロールを使用して、アカウントの CloudWatch Logs にログを送信します。サービスにリンクされたロールは、AWS のサービスに直接リンクされた IAM ロールです。サービスにリンクされたロールは、サービスによって事前定義されており、お客様の代わりにサービスから他の AWS サービスを呼び出す必要のあるアクセス許可がすべて含まれています。CloudFront Functions は、AWSServiceRoleForCloudFrontLogger と呼ばれるサービスリンクされたロールを使用します。このロールの詳細については、「Lambda@Edge 用のサービスにリンクされたロール」を参照してください (Lambda@Edge は同じサービスリンクされたロールを使用します)。

関数が検証エラーまたは実行エラーで失敗すると、CloudFront の標準ログリアルタイムログに情報が記録されます。エラーに関する情報は x-edge-result-typex-edge-response-result-typex-edge-detailed-result-type の各フィールドに記録されます。