CloudFront:你亏钱的地方
Source: Dev.to

CloudFront 通常是出于良好初衷加入到架构中的:提升性能、提高可靠性、降低源站负载。随后几个月后,它却出现在 AWS 账单的前列,却没有人知道原因。
令人不安的真相是,CloudFront 很少因为一个大错误而变得昂贵。它之所以变贵,是因为它在大规模下放大了微小的低效。
下面列出了 CloudFront 悄悄消耗金钱的几个环节——以及首先需要检查的内容。
1. 缓存不是一个复选框
大多数 CloudFront 成本问题都始于 存在但设计不当 的缓存。
- 不同类型的内容表现差异很大,但它们常常在同一个缓存策略下提供。
不可变的静态资源、频繁变化的 HTML 和 API 响应都应得到不同的处理。 - 具有唯一名称的文件(尤其是带哈希的资产)应当积极缓存。如果每次构建文件名都会改变,则文件本身实际上是不可变的。每隔几分钟重新验证一次纯属浪费。
- 像
index.html这样的内容确实会变化——但完全禁用缓存很少是正确的答案。一个短 TTL 通常足以在新鲜度和成本之间取得平衡。 - 一旦 CloudFront 缓存合理化,浏览器缓存 就成为下一个收益点。对 S3 对象设置合适的
Cache‑Control响应头可以减少重复请求,悄然降低成本,而无需触及基础设施。
2. 如果 CloudFront 不是唯一入口点,您就会多付费用
当内容直接从 S3 下载而不是通过 CloudFront 传输时,您会失去金钱 和 安全。
- 这通常发生在应用程序意外暴露原始 S3 URL,或旧链接仍指向存储桶的情况下。从用户角度看,一切仍然正常,但在后台 S3 正在提供本应由 CloudFront 处理的流量。
- 财务影响:
- 没有缓存和压缩 → 更高的 S3 数据传输费用。
- 安全风险:公开可访问的存储桶属于配置错误。
- 在生产环境中,S3 应仅通过 CloudFront 提供内容,这由 Origin Access Control (OAC) 强制实现。配置 OAC 后,CloudFront 成为唯一受信任的入口点,其他所有访问都会被阻止。
3. 压缩要么开启——否则你在为流量付费
压缩问题往往不易察觉,因为它们不会导致功能失效。
- 某些客户端和第三方工具会发送明确禁用压缩的请求头。如果你的源站遵循这些头部,响应将以未压缩的形式返回,导致负载大小增加并产生更高的数据传输费用。
- CloudFront 可以安全地处理压缩——前提是 自动压缩 已启用。这个单一设置可能决定账单是合理还是令人困惑。

4. 僵尸分配仍然花费真实金钱
CloudFront 分配往往会积累:
- 概念验证、临时域名、旧项目——它们很少被删除。
- 即使没有人有意使用,机器人也经常会访问。
快速检查分配及其流量指标,常能发现本应在数月前就已停用的“幽灵”资源。先停用,后删除。仍然收到流量的未使用基础设施就是纯粹的浪费。
5. 为本地产品使用全球 CDN = 浪费预算
默认情况下,CloudFront 会从全球的边缘位置提供内容。
- 如果您的用户主要集中在某个地区,限制分发到合适的 price class 可以在不影响真实用户的前提下降低数据传输成本。
- 许多团队在首次设置后从未重新审视此设置。
全球覆盖能力强大——但不必要的覆盖会很昂贵。
6. Security Rules Also Show Up on the Bill
AWS WAF 保护 CloudFront,但它也会对 每个请求 进行规则评估。
- 随着时间推移,规则集会增多。
- 托管规则被“以防万一”地启用。
- 日志记录对所有内容开启。
- 本应提前拦截的请求仍然继续通过系统。
定期的 WAF 检查可以减少不必要的处理,同时降低 CloudFront 成本。安全与成本优化在这里并非对立关系。
7. 每增加一个千字节都会被流量放大
即使缓存做得再完美,CloudFront 仍会对传输的数据收费。
- 检查客户端实际收到的内容,尤其是首次页面加载时。
- 许多应用会返回配置数据、元数据或 API 字段,而前端已经不再使用这些数据。
每增加一个千字节都会被流量乘以。压缩可以有所帮助,但它并不能让不必要的数据免费。减小负载大小可以提升性能,降低 CloudFront 成本,并减轻源站压力——而无需触及基础设施。
8. 你无法监控的东西就无法优化
CloudFront 很少会在一夜之间变得昂贵。费用通常会悄悄向上漂移。
- 设置 cost‑anomaly alerts(成本异常警报)和定期使用情况仪表盘。
- 追踪 Cache Hit Ratio(缓存命中率)、Data Transfer(数据传输)、Requests(请求)以及 WAF evaluations(WAF 评估)等指标。
- 使用 AWS Cost Explorer 或第三方工具尽早发现异常峰值。
通过持续监控并迭代上述项目,你可以让 CloudFront 成为架构中成本效益高的组成部分,而不是隐藏的资金消耗点。
监控与成本控制
异常检测、每月成本报告以及分发层级的监控,使 CloudFront 从意外支出转变为可控系统。缺乏可视性,即使是优秀的架构也会逐渐衰退。
最终思考
CloudFront 不会浪费你的钱。它会准确地因低效而向你收费。
每一次错失的缓存机会、每一个额外的头部、每一个被遗忘的分配都会被流量放大。把 CloudFront 当作一个活的系统——而不是一次性设置——来对待,它就会保持低成本且可预测。
