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

查询 Amazon CloudFront 日志

您可以配置 Amazon CloudFront CDN 以将 Web 分配访问日志导出到 Amazon Simple Storage Service。使用这些日志可跨 CloudFront 提供的 Web 属性浏览用户的网上冲浪模式。

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

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

注意

此过程适用于 CloudFront 中的 Web 分配访问日志。它不适用于 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 提供的字节的数量。将日期列名称用双引号引起来,因为它是保留字。

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 访问日志(2018 年 12 月 21 日)。

使用 AWS Lambda、Amazon Athena 和 Amazon Kinesis Analytics 构建无服务器架构来分析 Amazon CloudFront 访问日志(2017 年 5 月 26 日)。