You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取S3或CloudFront单文件成本及高下载量文件统计?

解决S3+CloudFront静态站成本优化的两个关键问题

嘿,我来帮你搞定这两个成本优化相关的问题,正好我之前给几个静态站点做过类似的成本分析和优化,分享下实操方法:

一、找出下载量最高的文件

因为你的站点是通过CloudFront分发的,优先看CloudFront的访问日志(大部分请求会走CDN,S3日志只会记录回源请求,数据不全),具体步骤如下:

  1. 开启CloudFront标准访问日志:在CloudFront分发的「日志」设置里,指定一个S3桶来存储日志(可以是现有站点桶的子目录,或者单独的日志桶),确保日志格式包含cs-uri-stem(请求的文件路径)字段。
  2. 用Athena分析日志:
    • 到Athena控制台,创建一个指向CloudFront日志存储路径的表(可以用AWS提供的CloudFront日志表模板快速生成)。
    • 执行查询SQL来统计每个文件的请求量,示例:
      SELECT cs_uri_stem, COUNT(*) AS request_count
      FROM your_cloudfront_log_table
      WHERE date >= '2024-01-01' AND date <= '2024-01-31' -- 替换成你要统计的时间范围
      GROUP BY cs_uri_stem
      ORDER BY request_count DESC
      LIMIT 20;
      
    这样就能直接拿到请求量Top的文件列表了。

如果想补充看S3的回源请求情况(比如哪些文件缓存命中率低、频繁回源),可以开启S3访问日志,同样用Athena分析cs-object-key字段的请求数。

二、计算单文件的成本

单文件的成本由CloudFront成本和S3关联成本两部分组成,得拆分来算:

1. CloudFront部分成本

CloudFront的收费项主要是:

  • 请求数费用:按HTTP/HTTPS请求的数量计费,不同区域单价不同(比如美国东部区域的HTTPS请求单价约$0.000012/次)。
  • 数据输出费用:分为「边缘到用户的流量」和「回源到S3的流量」(回源到同区域S3的流量免费,跨区域会收费)。
    你可以从CloudFront日志里提取该文件的总请求数、总边缘输出流量(sc-bytes字段)、总回源流量(若日志开启回源字段),再乘以对应区域的单价。

2. S3部分成本

S3的关联成本主要是:

  • 存储成本:该文件占用的存储空间乘以对应存储类的单价(比如标准存储约$0.023/GB/月)。
  • 回源请求成本:CloudFront回源到S3的请求数(比如GET请求单价约$0.0004/1000次)。

举个计算例子

假设你的某个文件/main.js:

  • 当月CloudFront请求数10万次,边缘输出流量5GB,回源请求1000次(缓存命中率99%)
  • S3存储占用1MB,用标准存储
    那么成本大概是:
  • CloudFront请求费:100000 * $0.000012 = $1.2
  • CloudFront边缘流量费:5GB * $0.085(美国东部区域单价)= $0.425
  • S3回源请求费:1000 * ($0.0004/1000) = $0.0004
  • S3存储费:(1/1024)GB * $0.023 ≈ $0.000022
    总成本≈$1.625

额外的成本优化小建议

  • 给高下载量的文件开启Gzip/Brotli压缩,减少流量输出成本。
  • 调整CloudFront缓存策略,给静态文件设置更长的TTL(比如图片、JS/CSS设为30天),提高缓存命中率,减少回源请求。
  • 把访问量低的文件移到S3低频存储(Infrequent Access)或冰川存储,降低存储成本。

内容的提问来源于stack exchange,提问作者casolorz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:20:47