Cloudflare R2 与 AWS S3 成本对比:0 外网流量费的迁移实践

为什么考虑 R2?

  • 零外网流量费:跨区域 CDN 分发不计出网费,适合流量密集型站点。
  • S3 兼容:API 兼容,SDK/CLI 直接可用。
  • 适合场景:静态资源分发、图片/视频 CDN 前置、日志归档;不适合低延迟内网存储。

计费对比(简化示例)

  • 存储单价:与 S3 标准价位接近,具体看区域。
  • 外网流量:S3 约 $0.09+/GB,R2 免流量费。
  • 请求费用:R2 计次,压缩日志后差异可忽略;高 QPS 请做缓存。
  • 数据迁出/回源:R2 拉取源桶或本地上传,避免频繁跨云读写。

迁移步骤

  1. 创建 R2 Bucket:Cloudflare 控制台 → R2 → Create bucket。
  2. 开通 S3 兼容 API:生成 Access Key/Secret,绑定自定义域名(可选)。
  3. 数据同步
    1
    2
    3
    # 以 rclone 为例
    rclone config # 新建 S3 兼容端点,填 R2 的 endpoint
    rclone sync s3:your-s3-bucket r2:your-r2-bucket
    也可用 aws s3 sync 配合 --endpoint-url
  4. 校验:抽样对比文件 hash/数量;开启版本控制需提前规划。
  5. 切流量:更新 CDN/应用的对象域名或签名 URL 指向 R2。

性能与架构建议

  • CDN 前置:R2 + Cloudflare CDN,自带缓存规则,命中率高可进一步降成本。
  • 签名访问:私有资源用 S3 风格签名或 Cloudflare Signed URL。
  • 并发上传:大文件用分段上传,避免超时;批量迁移开多线程。
  • 热点优化:为热点资源加缓存 TTL,避免过多请求回源 R2。

踩坑提示

  • 入口域名区分:R2 原生域和自定义域,HTTPS 证书需配置好。
  • 跨区域延迟:R2 目前区域有限,对延迟敏感业务需就近或自建。
  • 元数据/ACL 差异:S3 的 ACL/Policy 不完全等价,迁移前核对权限模型。
  • 日志与计费:定期下载/审计计费明细,确认免流量覆盖你的场景。

总结

R2 在“零流量费”上显著优于 S3,特别适合静态分发和大流量外发场景。迁移核心是:兼容端点、批量同步、校验、更新域名,配合 CDN 缓存即可快速降成本。***