SuperAPI AI 工具集

cloudflare-r2

部署与运维

查看项目

更新于 10-27 02:30

技能介绍

Cloudflare R2 是构建在 Cloudflare 全球网络上的 S3 兼容对象存储,主打零出口费用。本技能用于管理 R2 存储桶、对象、生命周期与签名 URL,适合低出口流量的对象存储与媒体分发。

用途与适用场景 可存储用户上传、媒体文件、备份或静态资产;用于替换 AWS S3,以消除读多写少负载的出口成本;可通过 Workers 或公共存储桶在边缘分发文件;可构建避免厂商锁定的多云存储(S3 API 兼容);也可存放机器学习模型产物、训练数据或推理结果。

前置条件 需有已启用 R2 的 Cloudflare 账户(在控制台 R2 中订阅);安装 Wrangler CLI v3 及以上版本,命令为 npm install -g wrangler;通过 wrangler login 或 CLOUDFLARE_API_TOKEN 认证;如需 S3 API 访问,需在 R2 的 Manage R2 API Tokens 中创建 R2 API Token。

主要能力

  1. 用 Wrangler 管理存储桶:创建、按位置提示创建(如 --location=eu)、列出、删除空桶。
  2. 对象操作:上传单文件,可指定 content-type;下载、删除、读取元数据等。
  3. S3 兼容 API:现有 AWS CLI、boto3、s3cmd 等工具可直接使用。需创建具备 Object Read & Write 或 Read only 权限、尽量限定到具体桶的 R2 API Token,并在工具中配置 R2 端点 https://<ACCOUNT_ID>.r2.cloudflarestorage.com 与区域 auto。
  4. Worker 绑定:在 wrangler.toml 中通过 [[r2_buckets]] 绑定桶,Worker 内用 env 绑定读取对象、写入 HTTP 元数据与缓存头;资料示例仅为只读 GET,PUT/DELETE 默认拒绝,待补齐认证、对象级授权、键规范化、上传大小限制与审计后再开放。
  5. 预签名 URL:可在 Worker 中用 aws4fetch 生成限时签名,但资料要求先实现已验证的调用方与对象授权,示例签名主体默认禁用。boto3 也可生成预签名 URL,资料示例有效期为 1 小时。
  6. 公共访问:在桶设置中启用 Public access 并配置自定义域名,对象通过 https://assets.example.com/<key> 访问;测试可用 r2.dev 子域。
  7. 生命周期规则:可通过控制台或 API 配置按前缀过期删除,例如 tmp/ 7 天、logs/ 90 天。
  8. CORS:可通过 API 配置允许的来源、方法、请求头与缓存时长,用于浏览器直传。

安全与限制 资料明确:写入或生命周期变更前,确认账户、桶、精确键或前缀及覆盖/删除权限;签名 URL 是持有即授权的凭据,需授权调用方与对象、编码键路径、设置明确短有效期与方法、以 no-store 私下返回,不得在日志中打印或分享;CORS 不用于认证调用方。零出口费不等于零存储、请求或不频繁访问费用。R2 仅支持 S3 的部分行为,CLI 子命令与位置提示需对照已安装的 Wrangler 版本核实;基础设施命令可能影响服务,变更前应确认目标主机/范围并备好备份或快照。资料为文档导入,上游脚本与模板未一并提供。

故障排查要点 S3 API 报 NoSuchBucket 时检查端点与桶名;SignatureDoesNotMatch 时检查密钥并重生成 Token、确保区域为 auto;上传成功但 GET 404 时注意键不应以 / 开头;大文件上传慢可用分片并配合 --expected-size;浏览器 CORS 报错需为来源域添加 CORS 规则;Worker 绑定返回 undefined 时核对 wrangler.toml 绑定名与 Env 属性一致;公共访问 403 时确认已启用 Public access。

相关技能 cloudflare-workers 用于签名 URL 生成与边缘文件服务;cloudflare-pages 用于 Pages Functions 绑定 R2;cdn-setup 用于资产分发 CDN 配置。