Amazon Athena
ユーザーガイド

Amazon CloudFront ログのクエリ

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

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

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

注記

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

CloudFront ログのテーブルの作成

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

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

    このクエリでは、デフォルトで使用される LazySimpleSerDe が省略されています。

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

    CREATE EXTERNAL TABLE IF NOT EXISTS default.cloudfront_logs ( `date` DATE, time STRING, location STRING, bytes BIGINT, requestip STRING, method STRING, host STRING, uri STRING, status INT, referrer STRING, useragent STRING, querystring STRING, cookie STRING, resulttype STRING, requestid STRING, hostheader STRING, requestprotocol STRING, requestbytes BIGINT, timetaken FLOAT, xforwardedfor STRING, sslprotocol STRING, sslcipher STRING, responseresulttype STRING, httpversion STRING, filestatus STRING, encryptedfields INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://CloudFront_bucket_name/AWSLogs/Account_ID/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
  2. Athena コンソールでクエリを実行します。クエリが完了すると、Athena は cloudfront_logs テーブルを登録し、そのデータに対してクエリを発行できるように準備します。

CloudFront ログのクエリ例

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

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

CloudFront の CREATE TABLE クエリの結果から空の値を除外することが必要になる場合があります。これを行うには、SELECT DISTINCT * FROM cloudfront_logs LIMIT 10; を実行します。

詳細については、AWS Big Data Blog の記事「サーバーレスアーキテクチャをビルドし、AWS Lambda、Amazon Athena、および Amazon Kinesis Analytics を使用して Amazon CloudFront のアクセスログを分析する」を参照してください。