Skip to content

R2

R2 是 Worker 可访问的对象存储。Worker 绑定 API 与 Cloudflare 一致;对象数据存放在配置的 S3 兼容存储中。

例如:

  • 存储文件与二进制对象
  • 从 Worker 读写对象
  • 通过配置的 S3 执行分片上传
ts
export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const url = new URL(request.url);
    const key = url.pathname.slice(1);
    if (request.method === "PUT") {
      await env.BUCKET.put(key, request.body);
      return new Response("ok");
    }
    const object = await env.BUCKET.get(key);
    if (object === null) return new Response("missing", { status: 404 });
    return new Response(object.body, { headers: { "etag": object.httpEtag } });
  },
} satisfies ExportedHandler<{ BUCKET: R2Bucket }>;

open-compute.json 中绑定已存在的 bucket:

json
{
  "name": "r2-app",
  "main": "src/index.ts",
  "bindings": {
    "BUCKET": { "type": "r2_bucket", "id": "<r2-bucket-id>" }
  }
}

id 必须指向平台上已有的逻辑 bucket。语法见 绑定。CLI:oc / oc run / oc types

兼容性

主题Cloudflareopen-compute
Worker APIR2 Workers API相同:head / get / put / delete / list、条件写、checksum、分片上传、HTTP metadata
对象存储位置Cloudflare R2配置的 S3 兼容存储
全球就近存放提供不提供
r2.dev 公开访问提供不提供
数据驻留限制提供不提供
REST / client.v4提供不提供;使用 Worker 绑定或存储商的 S3 API

本节