如果还没有用于存储日志的S3桶,按照以下步骤创建,如果要使用已有桶,可跳过该步骤。
1.1 使用以下URL打开S3控制台
https://s3.console.aws.amazon.com/s3/buckets

1.2 输入存储桶名称和选择区域,其余参数保留默认配置

1.3 为日志桶设置生命周期规则,定期删除旧文件。
使用Athena查询时费用和扫描的数据量有关,因此定期删除过期文件,可控制查询成本以及提高查询速度。
在S3桶的详情页面切换到“管理”标签页,点击“创建生命周期规则”

参考以下截图进行配置:

2.1 点击分配ID进入详情页,确认标准日志已经打开

2.2 点击“编辑”按钮进入编辑页面,启用标准日志,确认或设置日志存储路径。

通过以下链接打开Athena控制台, 切换到和日志存储桶相同的区域
https://console.aws.amazon.com/athena/home
3.1 (可选) 如果是第一次使用Athena,需要先设置一个S3桶用于存储Athena查询的结果,步骤如下图:

3.2 在Athena查询编辑器

3.3 运行建表语句
在查询编辑器中运行以下建表语句,注意需要将其中的LOCATION修改为存储CloudFront标准日志的路径。
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_standard_log_bucket_name/prefix/>'
TBLPROPERTIES ( 'skip.header.line.count'='2' )

3.4 运行SQL查询

CloudFront标准日志各个字段的说明参考以下链接: