[ PROMPT_NODE_24246 ]
R2 说明文档
[ SKILL_DOCUMENTATION ]
# Cloudflare R2 对象存储
兼容 S3 的对象存储,无出口流量费用,针对大文件存储和分发进行了优化。
## 概述
R2 提供:
- 兼容 S3 的 API (Workers API + S3 REST)
- 全球无出口流量费用
- 写入/删除的强一致性
- 存储类(标准/不频繁访问)
- 支持 SSE-C 加密
**使用场景:** 媒体存储、备份、静态资源、用户上传、数据湖
## 快速入门
bash
wrangler r2 bucket create my-bucket --location=enam
wrangler r2 object put my-bucket/file.txt --file=./local.txt
typescript
// 上传
await env.MY_BUCKET.put(key, data, {
httpMetadata: { contentType: 'image/jpeg' }
});
// 下载
const object = await env.MY_BUCKET.get(key);
if (object) return new Response(object.body);
## 核心操作
| 方法 | 用途 | 返回值 |
|--------|---------|---------|
| `put(key, value, options?)` | 上传对象 | `R2Object | null` |
| `get(key, options?)` | 下载对象 | `R2ObjectBody | R2Object | null` |
| `head(key)` | 仅获取元数据 | `R2Object | null` |
| `delete(keys)` | 删除对象 | `Promise` |
| `list(options?)` | 列出对象 | `R2Objects` |
## 存储类
- **Standard(标准)**: 频繁访问,低延迟读取
- **InfrequentAccess(不频繁访问)**: 30 天最低存储期,有检索费用,存储成本较低
## 事件通知
R2 与 Cloudflare Queues 集成以实现响应式工作流:
typescript
// wrangler.jsonc
{
"event_notifications": [{
"queue": "r2-notifications",
"actions": ["PutObject", "DeleteObject"]
}]
}
// 消费者
async queue(batch: MessageBatch, env: Env) {
for (const message of batch.messages) {
const event = message.body; // { action, bucket, object, timestamps }
if (event.action === 'PutObject') {
// 处理上传:缩略图生成、病毒扫描等
}
}
}
## 阅读顺序
**初次使用者:** README → configuration.md → api.md → patterns.md
**特定任务:**
- 设置:configuration.md
- 客户端上传:patterns.md (预签名 URL)
- 公共静态站点:patterns.md (公共访问 + 自定义域名)
- 处理上传:README (事件通知) + queues 参考
- 调试:gotchas.md
## 本参考文档内容
- [configuration.md](./configuration.md) - 绑定、S3 SDK、CORS、生命周期、令牌作用域
- [api.md](./api.md) - Workers API、分段上传、条件请求、预签名 URL
- [patterns.md](./patterns.md) - 流式传输、缓存、客户端上传、公共存储桶
- [gotch