Cloudflare

Cloudflare R2 完全ガイド:無料10GBとエグレス料金なしで始める方法

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


スポンサードリンク

1. アカウント作成と無料枠の概要

項目 内容
必要な情報 メールアドレス+クレジットカード(課金は超過時のみ)
無料ストレージ 10 GB の保存容量が無期限で利用可
リクエスト料金 GET/PUT/DELETE などの API 呼び出しは従量課金(例:$0.005/1,000 リクエスト)
エグレス費用 ダウンロードに対する追加料金 なし

手順(3 分で完了)

  1. Cloudflare 公式サイトの「Sign Up」からメール認証。
  2. コンソール左上の Billing メニューでクレジットカードを登録。
  3. ※無料枠は自動的に有効化され、課金は保存容量・リクエスト数が超過したときだけです。

ポイント:クレジットカード情報は「支払い方法の確認」用であり、実際に請求が走るのは無料枠を超えた瞬間です。小規模プロジェクトや検証環境ではほぼコストゼロで開始できます。


2. R2 バケットと認証情報の取得

2‑1. バケット作成手順(ダッシュボード)

  1. コンソール左メニュー → R2 → 「Create bucket」
  2. Bucket nameRegion を入力。リージョンは auto がデフォルトで推奨されます。
  3. 作成完了後、バケット一覧に表示されます。

2‑2. API キー(Access Key / Secret Key)の取得

  1. 同じ R2 メニュー → API Tokens → 「Create Token」
  2. テンプレートから “Edit R2 Buckets” を選択し、対象バケットを指定。
  3. 作成後に表示される Access Key IDSecret Access Key を安全な場所へ保存(環境変数やシークレットマネージャーの利用が推奨)。

注意:キーは S3 互換ツールで認証情報として使用します。漏洩すると不正アクセスにつながるため、絶対にコードベースにハードコーディングしないでください。


3. S3 互換ツールで R2 を操作する

3‑1. AWS CLI の設定例

3‑2. GUI ツールの設定ポイント

ツール 設定項目
s3cmd Host = <ACCOUNT_ID>.r2.cloudflarestorage.comSignature v4 = True
Cyberduck プロトコルは S3 (Amazon Simple Storage Service)、サーバーに同上、ポート 443、Path Style Access を有効化
Rclone type = s3provider = Cloudflareendpoint = https://<ACCOUNT_ID>.r2.cloudflarestorage.com

3‑3. 基本コマンド集

操作 AWS CLI s3cmd
アップロード aws s3 cp ./file.txt s3://my-bucket/ --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com s3cmd put file.txt s3://my-bucket/
ダウンロード aws s3 cp s3://my-bucket/file.txt ./ --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com s3cmd get s3://my-bucket/file.txt .
削除 aws s3 rm s3://my-bucket/file.txt --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com s3cmd del s3://my-bucket/file.txt

ベストプラクティス:大量小ファイルの PUT はまとめて zip 化し、一括アップロードすることでリクエスト数を削減できます。


4. 公開アクセス、CORS、署名付き URL の設定

4‑1. バケットポリシーでオブジェクト公開

CLI 適用コマンド:

4‑2. CORS 設定(XML)

CLI 適用:

4‑3. 署名付き URL の取得例

方法 コマンド/コード
AWS CLI(有効期限 1 h) aws s3 presign s3://my-bucket/file.png --expires-in 3600 --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com
Workers (JavaScript) javascript export async function onRequest({ env }) { const obj = await env.MY_BUCKET.get('file.png'); const url = await obj.signURL({ expiresIn: 60 * 15 }); return new Response(Signed URL: ${url}); }

活用シーン:一時的に外部パートナーとファイルを共有したい場合や、認証が必要な画像・PDF をフロントエンドから直接取得させたいときに便利です。


5. Workers と Pages との連携例

5‑1. Workers → R2 の基本コード

wrangler.toml の R2 バインド設定

5‑2. Pages と R2 のシームレス配信

  1. wrangler.toml に同様の [[r2_buckets]] を追加。
  2. ビルド後、npm run deploy(内部で wrangler publish)が自動的に static-assets バケットへ成果物をプッシュ。
  3. Pages のエッジサーバーは /assets/* へのリクエストを Workers 経由で R2 に転送し、CDN がキャッシュを担当します。

メリット:オリジンが不要になるためレイテンシが低減し、かつエグレス費用が発生しない点が大きなコストアドバンテージです。

5‑3. Nextcloud と R2 の統合(参考リンクは Future Architect 記事)

  1. Nextcloud 管理画面 → 外部ストレージ → 「Amazon S3」
  2. エンドポイントに <ACCOUNT_ID>.r2.cloudflarestorage.com、認証方式は Signature v4
  3. 取得した Access Key / Secret Key を入力し、バケット名(例: nextcloud-data)を設定。

注意点:R2 は現在 Lifecycle ルールが未実装です。定期的な削除処理は外部スクリプトで代替してください。


6. コスト構造と最適化ポイント

項目 無料枠 超過時の課金(2026 年4月)
保存容量 10 GB (無償) $0.015 / GB‑month
GET リクエスト 1,000 件まで無料(※公式に明記なし) $0.005 / 1,000 件
PUT/POST/DELETE 無料 $0.01 / 1,000 件
データ転送(エグレス) 無料 -

コスト削減の実践テクニック

  1. キャッシュ戦略
  2. Workers または Cloudflare CDN の Cache-Control: max-age=86400 を設定し、同一オブジェクトへの GET リクエストを大幅に削減。

  3. バッチアップロード

  4. 小ファイルが多数ある場合は zip アーカイブ化して 1 回の PUT に集約することでリクエスト数と API 呼び出しコストを抑制。

  5. 保存容量管理

  6. ログや古いバックアップは aws s3 rm スクリプトで自動削除(例:30 日超過ファイル)。R2 に Lifecycle 機能が追加されたら置き換える。

  7. モニタリング

  8. Cloudflare Dashboard の「Analytics」→「R2 Usage」でリアルタイムのリクエスト数と使用容量を確認し、予算超過前にアラート設定(外部監視ツールとの連携も可)。

7. トラブルシューティングチェックリスト

エラーコード 主な原因 確認ポイント
403 Forbidden (InvalidAccessKeyId) キーが間違っている、または endpoint が未指定 aws configure list --profile r2 でキーを確認、CLI に必ず --endpoint-url を付与
CORS エラー(ブラウザコンソール) バケットの CORS 設定が無い/許可ドメイン不一致 AllowedOrigin がフロントエンド URL と完全一致しているか
InvalidRegion R2 では region=auto 固有であるにも関わらず他リージョン指定した aws configure set region auto --profile r2 を再設定
429 TooManyRequests 短時間に過剰リクエストを送信 リトライロジックに指数バックオフ(例:100ms → 200ms → 400ms)を実装
SignatureDoesNotMatch シークレットキーのタイプミス、または署名方式不一致 Signature v4 が有効か、キー文字列に余分な空白が無いか

対策フロー
1. エラーメッセージを正確にコピー → Cloudflare Docs の該当ページで検索。
2. 設定ファイル(.aws/configwrangler.toml)を再確認。
3. 必要なら Incognito モードや別マシンからリクエストを試し、環境依存か判定。


8. まとめ

  • アカウント作成はメール認証+カード登録だけで完了。無料枠の 10 GB は無期限に利用可能です。
  • バケットとキーは Cloudflare ダッシュボードから数クリックで取得でき、S3 互換ツールへの設定もシンプルです。
  • CLI/GUI ツール(AWS CLI、s3cmd、Cyberduck、Rclone 等)にエンドポイント https://<ACCOUNT_ID>.r2.cloudflarestorage.com を指定すれば、従来の S3 と同様に操作できます。
  • 公開設定・CORSはバケットポリシーと XML 設定で完結し、署名付き URL により一時的な安全共有も実装可能です。
  • Workers / Pages 連携ではエッジ側から直接 R2 を呼び出すコードが数行で書け、静的資産の CDN 配信や画像加工パイプラインを低コストで構築できます。
  • 実務統合例として Nextcloud の外部ストレージ化や定期バックアップ(aws s3 sync)が挙げられます。R2 は Lifecycle が未提供なので削除は自動スクリプトで代替してください。
  • コスト管理は保存容量の無料枠とリクエスト課金に注目し、キャッシュやバッチ処理で最適化します。エグレス費用が不要な点は大量配信シナリオで大きなメリットです。
  • トラブルシューティングは認証・CORS・リージョン設定ミスが主因。チェックリストを活用すれば迅速に復旧できます。

次のステップ:本ガイドの手順通りに環境を構築し、実際に 1 GB 程度のファイルをアップロード・公開してみましょう。その結果を基に料金シミュレーションとパフォーマンス測定を行い、運用方針を固めることをおすすめします。


本稿は執筆時点(2026 年4月)で確認できた情報を元に作成しています。最新の仕様や料金は必ず公式サイトをご参照ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


-Cloudflare