Amazon CloudFront ログのクエリ - Amazon Athena

Amazon CloudFront ログのクエリ

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

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

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

注記

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

CloudFront ログのテーブルの作成

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

  1. 次の DDL ステートメントをコピーして Athena コンソール内に貼り付けます。ログを保存する Amazon S3 バケットの LOCATION を変更します。

    このクエリでは、デフォルトで使用される 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 のアクセスログを大規模に分析する (December 21, 2018 年 12 月 21 日)。

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