← 听不懂

CloudFront 免费套餐不支持标准日志(Standard Logging)

2026-03-10 AWS CloudFront标准日志免费套餐Cloudflare Analytics

问题描述

在 AWS 控制台给 CloudFront distribution 开启了 Standard Logging,配置了 S3 bucket 作为日志目标,等了 24 小时——S3 里什么都没有。

排查了一遍:

就是没有日志文件。

根因

查 AWS 文档和计费页面后发现:CloudFront Standard Logging(标准日志)在 Free Tier 下不生效

免费套餐包含:

不包含

控制台不会报错,也不会提示「此功能需要付费」——它就默默不产生日志。这是个信息不透明的体验问题,坑过很多人。

免费替代方案

方案一:Cloudflare Web Analytics(推荐)

最省事的方案。不需要 AWS 权限,不需要 S3,在页面里插入一段 JS beacon:

<!-- Cloudflare Web Analytics -->

<script defer src='https://static.cloudflareinsights.com/beacon.min.js'

data-cf-beacon='{"token": "YOUR_TOKEN"}'></script>

<!-- End Cloudflare Web Analytics -->

在 [Cloudflare Dashboard](https://dash.cloudflare.com) → Web Analytics 免费开通,获取 token,粘贴进去就完了。

优点:完全免费、隐私友好(无 cookie)、实时数据、支持 PV/UV/来源/地区/设备分类。

缺点:JS 被 AdBlock 拦截时不计入(通常影响 5-15% 的流量)。

方案二:S3 Server Access Logging

只记录直接访问 S3 的请求(不经过 CloudFront 的那部分):

# 开启 S3 Server Access Logging

aws s3api put-bucket-logging \

--bucket your-site-bucket \

--bucket-logging-status '{

"LoggingEnabled": {

"TargetBucket": "your-log-bucket",

"TargetPrefix": "s3-access/"

}

}'

注意:通过 CloudFront 的请求不会出现在这里,只有直接 S3 URL 访问才记录。对多数场景意义不大。

方案三:自建 1x1 GIF beacon

在 EC2/Lambda 上跑一个极简 HTTP 服务,页面请求一个 1x1 透明 GIF,服务器记录来源信息。成本低,完全自控,但需要维护代码。

结论

直接用 Cloudflare Web Analytics。5 分钟配好,永久免费,功能够用,不需要折腾 AWS 权限。

除非你有严格的「所有流量数据必须在 AWS 内」的要求,否则 CloudFront Standard Logging 在免费套餐下就是个摆设,不值得花时间排查。