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

如何统计AWS CloudFront中整段HLS视频的总传输数据量?

当然可行!CloudFront自带的报表确实只展示Top50对象,但我们有几种靠谱的方法可以拿到整个视频文件夹的总传输字节数,下面给你详细拆解:

方法1:用CloudFront访问日志+Athena分析(最推荐)

这是最准确、通用的方案,不管你之前有没有提前配置,只要开启了CloudFront日志就能用:

  • 第一步:确认CloudFront的标准访问日志已开启。如果还没开,去CloudFront控制台找到你的分发,进入「设置」→「日志」,开启后指定一个S3存储桶来存放日志(日志会按小时自动生成)。
  • 第二步:在Athena中创建关联日志的表。用下面的SQL语句(记得替换成你的日志存储S3路径):
CREATE EXTERNAL TABLE cloudfront_logs (
  date DATE,
  time STRING,
  x_edge_location STRING,
  sc_bytes BIGINT,
  c_ip STRING,
  cs_method STRING,
  cs_host STRING,
  cs_uri_stem STRING,
  sc_status INT,
  cs_referer STRING,
  cs_user_agent STRING,
  cs_uri_query STRING,
  cs_cookie STRING,
  x_edge_result_type STRING,
  x_edge_request_id STRING,
  x_host_header STRING,
  cs_protocol STRING,
  cs_bytes BIGINT,
  time_taken FLOAT,
  x_forwarded_for STRING,
  ssl_protocol STRING,
  ssl_cipher STRING,
  x_edge_response_result_type STRING,
  cs_protocol_version STRING,
  fle_status STRING,
  fle_encrypted_fields STRING,
  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 SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1',
  'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)'
)
LOCATION 's3://your-log-bucket/path/to/cloudfront-logs/';
  • 第三步:运行查询统计总传输量。假设你的视频文件夹路径是/videos/summer-vacation/,执行下面的SQL就能得到所有.ts文件的总传输字节数:
SELECT SUM(sc_bytes) AS total_transferred_bytes
FROM cloudfront_logs
WHERE cs_uri_stem LIKE '/videos/summer-vacation/%.ts';

这个查询会遍历所有日志,把匹配路径的.ts文件传输字节全部累加,结果完全准确。

方法2:CloudWatch指标+自定义维度(需提前配置)

如果你之前给视频文件夹的对象设置了自定义标签,或者在CloudFront里配置了自定义维度(比如给/videos/summer-vacation/下的对象打上VideoFolder: summer-vacation的维度),可以直接用CloudWatch聚合数据:

  • 打开CloudWatch控制台,找到CloudFront的BytesDownloaded指标;
  • 按自定义维度筛选出目标文件夹的指标,就能直接看到该文件夹的总传输量。
    不过这个方法需要提前配置,如果你之前没设置,还是方法1更适合。
方法3:S3访问日志(仅作参考)

如果CloudFront日志没开,你可以试试查看S3的访问日志(前提是S3日志也开启了)。但要注意:S3日志里的字节数是CloudFront回源时的请求字节数,而CloudFront有缓存机制,大部分用户请求会直接命中缓存,不会回源,所以这个数据会比实际分发量小很多,只能作为粗略参考,不建议用来做准确统计。

总的来说,方法1是首选,只要开启了CloudFront日志,不管日志积累了多久,Athena都能快速帮你算出整个文件夹的总传输字节数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:57:50