Amazon CloudFront ログのクエリ - Amazon Athena

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

Amazon CloudFront ログのクエリ

ウェブディストリビューションのアクセスログを Amazon CloudFront にエクスポートするように Amazon Simple Storage Service. CDN を設定できます。これらのログを使用して、 が提供するウェブプロパティ全体でのユーザーのサーフィンパターンを調べます。CloudFront.

ログのクエリを開始する前に、使用する CloudFront ディストリビューションでウェブディストリビューションのアクセスログを有効にします。詳細については、Amazon 開発者ガイドのCloudFront「アクセスログ」を参照してください。

ログの保存先の Amazon S3 バケットを書き留めます。

注記

この手順は、 のウェブディストリビューションのアクセスログ用です。CloudFront. RTMP ディストリビューションのストリーミングログには該当しません。

CloudFront ログのテーブルの作成

CloudFront テーブルを作成するには

  1. 次の DDL ステートメントをコピーしてAthena、 コンソールのクエリエディタに貼り付けます。ログを保存する LOCATION バケットの Amazon S3 を変更します。クエリエディタの使用については、「」開始方法を参照してください。

    このクエリではSerDe、デフォルトの を使用しますLazySimpleSerDe。 列dateは の予約語であるため、バックティック (`) を使用してエスケープAthenaされます。詳細については、 を参照してください。予約キーワード.

    CREATE EXTERNAL TABLE IF NOT EXISTS default.cloudfront_logs ( `date` DATE, time STRING, location STRING, bytes BIGINT, request_ip STRING, method STRING, host STRING, uri STRING, status INT, referrer STRING, user_agent STRING, query_string STRING, cookie STRING, result_type STRING, request_id STRING, host_header STRING, request_protocol STRING, request_bytes BIGINT, time_taken FLOAT, xforwarded_for STRING, ssl_protocol STRING, ssl_cipher STRING, response_result_type STRING, http_version STRING, fle_status STRING, fle_encrypted_fields INT, c_port INT, time_to_first_byte FLOAT, x_edge_detailed_result_type STRING, sc_content_type STRING, sc_content_len BIGINT, sc_range_start BIGINT, sc_range_end BIGINT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://CloudFront_bucket_name/CloudFront/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
  2. Athena コンソールでクエリを実行します。クエリが完了すると、Athena は cloudfront_logs テーブルを登録し、そのデータに対してクエリを発行できるように準備します。

CloudFront ログのクエリ例

次のクエリでは、2018 年 6 月 9 日~6 月 11 日に CloudFront で処理されたバイト数を加算します。date 列名は予約語であるため、二重引用符で囲みます。

SELECT SUM(bytes) AS total_bytes FROM cloudfront_logs WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11' LIMIT 100;

クエリ結果から重複する行 (重複する空の行など) を削除するには、次の例のように SELECT DISTINCT ステートメントを使用します。

SELECT DISTINCT * FROM cloudfront_logs LIMIT 10;

その他のリソース

Athena を使用して CloudFront ログのクエリを実行する方法の詳細については、AWS ビッグデータブログ.の次の投稿を参照してください。

Amazon Athena を使用して AWS のサービスログを簡単にクエリする (2019 年 5 月 29 日)。

Amazon CloudFront アクセスログを大規模に分析する (2018 年 12 月 21 日)。

AWS Lambda 、 Amazon Athena Amazon Kinesis AnalyticsCloudFront を使用して Amazon アクセスログを分析するサーバーレスアーキテクチャを構築する (2017 年 5 月 26 日)。