查询 Amazon CloudFront 日志 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询 Amazon CloudFront 日志

您可以配置 Amazon CloudFront CDN 以将 Web 分配访问日志导出到亚马逊简单存储服务。使用这些日志可跨 CloudFront 提供的 Web 属性浏览用户的网上冲浪模式。

在您开始查询日志之前,请在您的首选 CloudFront 分配上启用 Web 分配访问登录。有关信息,请参阅 Amazon CloudFront 开发人员指南中的访问日志

记下这些日志保存到的 Amazon S3 存储桶。

注意

此过程适用于 CloudFront 中的 Web 分配访问日志。它不适用于 RTMP 分配中的流日志。

为 CloudFront 日志创建表

创建 CloudFront 表

  1. 将以下 DDL 语句复制并粘贴到 Athena 控制台中的查询编辑器中。修改LOCATION用于存储日志的 Amazon S3 存储桶。有关使用查询编辑器的信息,请参阅。入门

    此查询使用默认 SerDeLazySimpleSerDe。该列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 提供的字节的数量。将日期列名称用双引号引起来,因为它是保留字。

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 日志的更多信息,请参阅Amazon大数据博客

轻松查询Amazon使用 Amazon Athena 服务日志(2019 年 5 月 29 日)。

大规模分析 Amazon CloudFront 访问日志(2018 年 12 月 21 日)。

构建无服务器体 Amazon CloudFront 使用Amazon Lambda、Amazon Athena 和 Amazon Kinesis Data Analytics(2017 年 5 月 26 日)。