バケットで Local Uploads を有効にすると、クライアントがバケットと別リージョンからデータをアップロードする場合のアップロード性能が向上します。Local Uploads はオブジェクトデータを近くの場所に書き、そのあとバケットへ非同期コピーします。データはすぐ利用でき、強い一貫性を保ちます。
次の節では、Local Uploads の有無による R2 のアップロードリクエストの扱いを説明します。
クライアントが R2 バケットへオブジェクトをアップロードすると、オブジェクトデータはクライアントからバケットのストレージ基盤まで移動する必要があります。クライアントがバケットと別リージョンにいると、レイテンシが高くなり、信頼性が下がることがあります。詳細は R2 の仕組み を参照してください。
Local Uploads を有効にしたバケットへアップロードリクエスト(PutObject と UploadPart)を送ると、次の 2 つの場合があります。
- クライアントとバケットが同じリージョン: R2 は通常のアップロードフローに従い、オブジェクトデータをクライアントからバケットのストレージ基盤へアップロードします。
- クライアントとバケットが別リージョン: オブジェクトデータはクライアント近くのストレージに書き込まれ、そのあとバケットへ非同期レプリケートされます。オブジェクトはすぐにアクセスでき、処理中も耐久性を保ちます。
Local Uploads は、バケットの所在地と異なる地理的リージョンからのアップロードが多いワークロード向けです。次の場合に適しています。
- ユーザーが世界中に分散している
- アップロードの性能と信頼性がアプリケーションにとって重要
- バケットのプライマリ所在地を変えずに書き込み性能を最適化したい
読み取りと書き込みリクエストの開始地点の地理分布を確認する手順は次のとおりです。
-
Cloudflare ダッシュボードにログインし、R2 Overview に進みます。
Overview を開く ↗ -
バケットを選択します。
-
Metrics を選択し、Request Distribution チャートを表示します。
Local Uploads を有効にすると、アップロード済みデータはレプリケーション完了まで、一時的にクライアント近くに置かれることがあります。
書き込み直後の即時読み取りが必要なワークロードでは、読み取りリクエストの起点を考慮してください。アップローダーのリージョンからの読み取りは速い一方、バケットのリージョン近くからの読み取りは、レプリケーション完了までリージョン間レイテンシが発生することがあります。
Local Uploads は 管轄制限 のあるバケットでは使えません。バケットのリージョン外の場所を一時的に経由する必要があるためです。
Local Uploads を有効にしても、進行中のアップロードは想定どおり完了し、トラフィックは中断しません。
-
Cloudflare ダッシュボードにログインし、R2 Overview に進みます。
Overview を開く ↗ -
バケットを選択します。
-
Settings を選択します。
-
Local Uploads で Enable を選択します。
次のコマンドを実行します。
npx wrangler r2 bucket local-uploads enable <BUCKET_NAME>Local Uploads はいつでも無効にできます。Local Uploads で行われた既存リクエストのレプリケーションは完了し、トラフィックは中断しません。
-
Cloudflare ダッシュボードにログインし、R2 Overview に進みます。
Overview を開く ↗ -
バケットを選択します。
-
Settings を選択します。
-
Local Uploads で Disable を選択します。
次のコマンドを実行します。
npx wrangler r2 bucket local-uploads disable <BUCKET_NAME>Local Uploads の有効化に 追加料金はありません。この機能を有効にしたアップロードリクエストは、無効時と同じ標準の Class A 操作料金 です。