エッジ関数のログ
Amazon CloudWatch Logs を使用して、Lambda@Edge と CloudFront 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 コンソールの [Monitoring (モニタリング)] セクションでのグラフ表示の詳細については、「Amazon CloudWatch で CloudFront メトリクスをモニタリングする」を参照してください。
-
CloudWatch Logs にデータを送信するために必要なアクセス許可については、「Lambda@Edge 用の IAM アクセス許可とロールのセットアップ」を参照してください。
-
Lambda@Edge 関数のログ作成の追加については、AWS Lambda デベロッパーガイドの「Node.js の AWS Lambda 関数ログ作成」または「Python の AWS Lambda 関数ログ作成」を参照してください。
-
CloudWatch Logs クォータ (以前は制限と呼ばれていました) の詳細については、Amazon CloudWatch Logs ユーザーガイドの「CloudWatch Logs クォータ」を参照してください。
CloudFront Functions のログ
CloudFront 関数のコードに console.log()
ステートメントが含まれている場合、CloudFront Functions はこれらのログ行を CloudWatch Logs に自動的に送信します。console.log()
ステートメントがない場合、CloudWatch Logs には何も送信されません。
CloudFront Functions は、関数が実行されたエッジロケーションに関係なく、常に米国東部 (バージニア北部) リージョン (us-east-1
) にログストリームを作成します。ロググループ名の形式は/aws/cloudfront/function/
、FunctionName
は関数を作成したときに指定した名前です。ログストリーム名の形式は FunctionName
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-type
、x-edge-response-result-type
、x-edge-detailed-result-type
の各フィールドに記録されます。