R2(オブジェクトストレージ)
作成2026年4月4日Takeshi Takatsudo
ファイルとブロブストレージ用の Cloudflare R2
概要
R2 はエグレス料金ゼロの S3 互換オブジェクトストレージ。ファイル、画像、バックアップ、大容量データに使用する。
セットアップ
バケットの作成
npx wrangler r2 bucket create my-files
wrangler.toml に追加:
[[r2_buckets]]
binding = "FILES"
bucket_name = "my-files"
関数での使用
interface Env {
FILES: R2Bucket;
}
// アップロード
await env.FILES.put("uploads/photo.jpg", imageData, {
httpMetadata: { contentType: "image/jpeg" },
});
// ダウンロード
const object = await env.FILES.get("uploads/photo.jpg");
if (object) {
return new Response(object.body, {
headers: {
"Content-Type": object.httpMetadata?.contentType || "application/octet-stream",
},
});
}
// 削除
await env.FILES.delete("uploads/photo.jpg");
// オブジェクトの一覧
const list = await env.FILES.list({ prefix: "uploads/" });
for (const object of list.objects) {
console.log(object.key, object.size);
}
注意点
- 自動パブリック URL はない: S3 のパブリックバケットとは異なり、R2 はファイルを公開配信するには Worker またはカスタムドメインが必要
- オブジェクトキー制限: キーは最大1024バイト
- メタデータ: 独自のキーバリューペアには
customMetadata、HTTP ヘッダーにはhttpMetadataを使用