利用带宽联盟实现CloudFlare + Backblaze B2私有存储桶 的免费流量方案

各位MJJ应该都不陌生,cf搞了个带宽联盟,从backblaze b2通过 cf传出的数据完全免费,不计入 B2 的带宽费用。这意味着:你可以将文件存储在 B2,然后通过cf分发,不产生任何下载流量费用。

但是,backblaze现在创建公开存储桶需要绑定信用卡才行:
利用带宽联盟实现CloudFlare + Backblaze B2私有存储桶 的免费流量方案

诶,那如果我们利用带宽联盟的特性使用workers将私有存储桶代理为公开的、可访问的链接不就可以绕开限制了,下行流量还完全免费,岂不美哉🤓

于是,这个S3 CloudFlare Workers 代理项目孕育而生。

GitHub Gist: S3 CloudFlare Workers 代理

部署

  1. 准备 Backblaze B2 存储桶
  • 注册 Backblaze 账号(无需信用卡)
  • 创建一个 B2 存储桶,选择私有即可。
  • 创建一个应用密钥(App Key)并记录下 keyID 和 applicationKey
  1. 设置 CloudFlare Workers
  • 进入 Workers & Pages 页面
  • 创建新 Worker(名称随意,如 "b2")
  • 将GitHub的代码丢进去,记得替换配置:
const CONFIG = {
  // 存储桶配置
  buckets: {
    // 格式: "存储桶名": { endpoint, accessKey, secretKey, isPublic }
    "example-bucket": {
      endpoint: "https://s3.region.backblazeb2.com",  // 必须包含 https:// 前缀
      accessKey: "YOUR_ACCESS_KEY", // 你的accesskey
      secretKey: "YOUR_SECRET_KEY", // 你的secretkey
      isPublic: true  // true = 公开访问模式, false = 私有访问模式
    },
  
    // 可添加多个存储桶
    "private-docs": {
      endpoint: "https://s3.region.backblazeb2.com",
      accessKey: "ACCESS_KEY_FOR_PRIVATE", 
      secretKey: "SECRET_KEY_FOR_PRIVATE",
      isPublic: false
    }
  },
  
  • 单击部署按钮即可

完成后可通过类似于https://your-worker-name.your-account.workers.dev/mjjages/path/to/file.jpg访问你的文件。

其他

  • 以看到该workers支持设置多个存储桶,也就是说你可以创建多个储存桶并在一个workers下面使用。
  • 该workers也可以设置私有模式,也就是把这个作为单纯的代理使用也是可以的,在此模式下你仍然需要鉴权才能访问存储桶的文件。
THE END