CloudFront 標準ログ用テーブルを作成する
注記
次の手順は、CloudFront にあるウェブディストリビューションのアクセスログで機能します。RTMP ディストリビューションのストリーミングログには該当しません。
CloudFront 標準ログファイルフィールド用のテーブルを作成する
-
次の DDL ステートメントの例をコピーして Athena コンソールのクエリエディタに貼り付けます。例のステートメントでは、「Amazon CloudFront デベロッパーガイド」の「標準ログファイルフィールド」セクションに記載されているログファイルフィールドを使用しています。
LOCATION
をログを保存する Simple Storage Service (Amazon S3) バケットに変更します。クエリエディタの使用については、「使用を開始する」を参照してください。このクエリは、フィールドがタブ文字で区切られることを示すために
ROW FORMAT DELIMITED
とFIELDS 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' )
-
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;