Cloud Service
R2 Object Storage
エグレス(データ転送)無料が最大の特徴のS3互換オブジェクトストレージ。AWS S3などからの移行や配信コスト削減に向く。
- 1.S3互換APIを持つオブジェクトストレージで、既存ツールや移行元コードをほぼ流用できる。
- 2.最大の特徴は外部へのデータ転送(エグレス)が無料であること。
- 3.Cloudflare Workersからバインディングで直接読み書きでき、配信と一体化しやすい。
解決する課題
- 大量のファイルを容量無制限に近い形で保存したいが、転送量課金が読めないのを避けたい
- 既存のS3向けツール・SDK・スクリプトを書き換えずに別のオブジェクトストレージへ移行したい
- Cloudflare Workersから直接オブジェクトを読み書きし、エッジで配信まで完結させたい
主要概念と用語
- バケット: オブジェクトを格納する入れ物。名前はアカウント内で一意
- オブジェクト: 保存する実体(データ本体+メタデータ)。キーで一意に識別
- キー: バケット内でオブジェクトを指す文字列パス。実体はフラットな名前空間
- エグレス: バケットから外部へ出ていくデータ転送のこと。R2はこれを無料としている点が特徴
- バインディング: Cloudflare Workersのコードから環境変数のようにバケットへ直接アクセスする仕組み
- S3互換API: Amazon S3のAPI仕様に合わせたインターフェースで、既存のS3クライアントから接続できる
仕様・制限・クォータ
- オブジェクトサイズの上限は大きなファイルにも対応する設計で、大容量は分割アップロード(マルチパートアップロード)を使う
- 強い整合性を持ち、書き込み・上書き・削除の反映は読み取りに即座に反映される
- バケットは既定では外部から直接の公開アクセスはできず、公開する場合は明示的な設定が必要
- リクエスト数やオブジェクト数に応じた制限があり、詳細な数値は公式ドキュメントで随時更新される
内部の仕組み
R2はキーからオブジェクト実体を引く分散オブジェクトストアで、Cloudflareのグローバルネットワーク上に構築されています。「フォルダ」はキーに含まれるスラッシュによる見かけ上の階層であり、実体はフラットなキー空間に格納されます。S3互換APIを提供しているため、認証方式やAPI呼び出しの形はS3のそれに準じますが、内部的な冗長化やネットワーク経路はCloudflare独自の基盤上で完結します。
一般的なパブリッククラウドのオブジェクトストレージは、保存料金に加えて外部への転送量(エグレス)にも課金されるのが通例です。R2はこのエグレス課金を行わない設計になっており、配信量が多いワークロードほど総コストの差が大きくなります。
設計パターン / ベストプラクティス
- 静的アセット配信: R2にファイルを置き、Cloudflareのエッジ経由で配信してエグレス費用を抑える
- S3からの移行: S3互換APIを使い、既存のアップロード・同期スクリプトをエンドポイントの差し替えだけで流用する
- Workers連携: バインディングを使い、Workersのコードから直接オブジェクトを読み書きして認証情報の管理を簡略化する
- バックアップ/アーカイブ: アクセス頻度の低いデータをInfrequent Access相当のクラスに置き、保存コストを抑える
運用・監視
- アクセス状況やリクエスト数はダッシュボードや監査ログで確認する
- バケットごとのイベント通知を使い、オブジェクトの作成・削除をトリガーに後続処理を起動できる
- アクセスできない・権限エラーが出る場合は、APIトークンの権限範囲やバケットの公開設定を最初に確認する
コスト
課金の考え方はストレージ容量とリクエスト数が中心で、外部への転送(エグレス)には課金されない点が他の主要クラウドのオブジェクトストレージと大きく異なります。具体的な単価や無料枠は変動するため、最新の料金ページで確認してください。
セキュリティ
- 既定では外部への直接公開はされず、公開が必要な場合はカスタムドメイン経由の公開設定など明示的な手順を踏む
- アクセス制御はAPIトークンのスコープで管理し、最小権限の範囲に絞るのが基本
- 保存データは暗号化された状態で管理され、通信経路もTLSで保護される
- 認証情報(アクセスキー相当)は環境変数やシークレット管理の仕組みを使い、コードに直書きしない
バケットを不用意に公開設定にすると、意図しないデータ露出につながります。配信を行う場合はカスタムドメインやアクセス制御ルールを組み合わせ、必要な範囲だけを公開する設計にします。
関連サービス・比較
| 観点 | R2 Object Storage | Amazon S3 |
|---|---|---|
| API | S3互換API | S3ネイティブAPI |
| エグレス課金 | 無料 | 従量課金 |
| Workers連携 | バインディングで直接アクセス | SDK経由のAPI呼び出し |
ハンズオン / CLI例
# バケットを作成
npx wrangler r2 bucket create my-bucket
# ローカルのファイルをオブジェクトとしてアップロード
npx wrangler r2 object put my-bucket/hello.txt --file=./hello.txt
# バケット一覧を確認
npx wrangler r2 bucket list
# オブジェクトを削除
npx wrangler r2 object delete my-bucket/hello.txt
Cloudflare Service
R2 Object Storageを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ストレージ
比較で見る軸
クラウド: Cloudflare / カテゴリ: ストレージ / 難易度: basic
導入後に効く点
最大の特徴は外部へのデータ転送(エグレス)が無料であること。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Cloudflare
- カテゴリ
- ストレージ
- 難易度
- basic
- 関連資格
- —
- 設計柱
- cost / performance / reliability
判断チェックリスト
- 自社の用途が「ストレージ / cost」に近いか確認する。
- 強みである「S3互換APIを持つオブジェクトストレージで、既存ツールや移行元コードをほぼ流用できる。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。