Skip to content

R2 API 与 S3 兼容

R2 兼容 S3 API,因此你可以使用 S3 客户端、AWS CLI 或 curl 操作对象。

S3 端点

R2 的 S3 API 端点格式是:

text
https://你的AccountID.r2.cloudflarestorage.com

curl 示例

上传对象:

bash
curl -X PUT \
  "https://你的AccountID.r2.cloudflarestorage.com/cloudflare-learning-lab/hello.txt" \
  -H "Authorization: AWS4-HMAC-SHA256 Credential=你的AccessKey/日期/region/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=你的签名"

实际项目中通常不会手写签名,而是使用 S3 客户端或 Workers 绑定。

为什么项目里不用 S3 密钥

本项目推荐 Workers 绑定 R2:

ts
env.DEMO_BUCKET.put('hello.txt', 'Hello R2')

这样更安全,因为:

  • 密钥不会出现在前端代码中。
  • 不需要在浏览器里签名。
  • Workers 负责权限控制。
  • 更容易部署和维护。

Cloudflare Learning Lab