CloudFront 標準ログ用テーブルを作成する - Amazon Athena

CloudFront 標準ログ用テーブルを作成する

注記

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

CloudFront 標準ログファイルフィールド用のテーブルを作成する
  1. 次の DDL ステートメントの例をコピーして Athena コンソールのクエリエディタに貼り付けます。例のステートメントでは、「Amazon CloudFront デベロッパーガイド」の「標準ログファイルフィールド」セクションに記載されているログファイルフィールドを使用しています。LOCATION をログを保存する Simple Storage Service (Amazon S3) バケットに変更します。クエリエディタの使用については、「使用を開始する」を参照してください。

    このクエリは、フィールドがタブ文字で区切られることを示すために ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t' を指定します。ROW FORMAT DELIMITED には、Athena がデフォルトで LazySimpleSerDe を使用します。列 date は Athena の予約語であるため、バックティック (`) を使用してエスケープされています。詳細については、クエリで予約キーワードをエスケープする を参照してください。

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_standard_logs ( `date` DATE, time STRING, x_edge_location STRING, sc_bytes BIGINT, c_ip STRING, cs_method STRING, cs_host STRING, cs_uri_stem STRING, sc_status INT, cs_referrer STRING, cs_user_agent STRING, cs_uri_query STRING, cs_cookie STRING, x_edge_result_type STRING, x_edge_request_id STRING, x_host_header STRING, cs_protocol STRING, cs_bytes BIGINT, time_taken FLOAT, x_forwarded_for STRING, ssl_protocol STRING, ssl_cipher STRING, x_edge_response_result_type STRING, cs_protocol_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://amzn-s3-demo-bucket/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
  2. Athena コンソールでクエリを実行します。クエリが完了すると、Athena が cloudfront_standard_logs テーブルを登録し、その中のデータに対してクエリを発行できるように準備します。

クエリの例

以下のクエリは、2018 年 6 月 9 日から 6 月 11 日の間に CloudFront によって提供されたバイト数をCに で処理されたバイト数を集計します。date 列名は予約語であるため、二重引用符で囲みます。

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

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

SELECT DISTINCT * FROM cloudfront_standard_logs LIMIT 10;