Gadget 39:R2 オブジェクトストレージ

S3 互換・送信課金なしの R2 を、バックアップやメディア保存に使い倒す

R2 オブジェクトストレージ

大きなバイナリ(バックアップ・画像・動画)を置くなら R2 です。

目的

  • バックアップやメディアの保存先として R2 を導入する
  • S3 互換 API での運用方法を把握する

前提条件

  • Workers 基礎(35-workers-basics
  • 公式: https://developers.cloudflare.com/r2/

R2 とは

  • S3 互換のオブジェクトストレージ
  • ダウンロード(送信)料金が無料(一般の CDN と違い課金されない)
  • ファイル・画像・バックアップの保存に向く

使い分け(再掲)

要件 選ぶもの
リレーショナル・SQL D1(38
高速キャッシュ的 KV KV(40
大きなバイナリ R2
強整合の状態 DO Storage(36

手順

1. バケット作成とバインド

npx wrangler r2 bucket create cfos-backup
[[r2_buckets]]
binding = "BACKUP"
bucket_name = "cfos-backup"

2. Worker から使う

async fetch(request, env) {
  const obj = await env.BACKUP.get("backups/cfos-2026-08-10.tgz");
  if (!obj) return new Response("Not found", { status: 404 });
  return obj.body;
}

3. S3 互換ツールからも操作(rclone)

rclone config      # S3 provider → R2 を選択、Account ID / Access Key / Secret
rclone copy ./cfos-backup r2:cfos-backup/backups --checksum

よくある失敗

症状 原因 対処
rclone で認証失敗 Account ID / キーの設定誤り Cloudflare ダッシュボードの R2 API トークンから再設定
公開 URL が要るのに 404 バケット未公開設定 カスタムドメイン or 公開バケット設定を検討
バックアップが増え続ける 保持管理なし ライフサイクル / 定期削除を設定
課金を誤解 送信無料を「全無料」と誤解 操作料金は存在。ダッシュボードで確認

確認

次に読む