Vercel Blob とは:S3 の設定の手間を減らすストレージ
Vercel Blob は、Vercel が提供するファイル用のオブジェクトストレージです。画像・動画・書類などを保存し、Vercel の CDN が利用者の近くにキャッシュして配信します。SDK の put() でアップロードでき、IAM やバケットポリシーのような S3 で時間を取られやすい設定を自分で組まずに使い始められます。本記事では、Vercel の公式ドキュメント(2026年10月21日に確認)の料金・上限・アクセス制御をもとに、S3・Cloudflare R2 との使い分けまで整理します。
採用すべき5つのシグナル
- S3の設定(IAM・CORS・署名URL)に時間を取られている
- Next.jsアプリでファイルアップロード機能が必要
- CDN配信を別途設定したくない
- 運用負荷を最小化したい
- マルチクラウド要件がない(Vercelで完結)
まず決める:公開ストアか非公開ストアか
Vercel Blob のストアには公開(public)と非公開(private)の2種類があり、ストアを作ったあとで切り替えることはできません。最初の設計でいちばん大事な判断です。
| 非公開ストア(private) | 公開ストア(public) | |
|---|---|---|
| 書き込み | 認証が必要 | 認証が必要 |
| 読み取り | 認証が必要(トークン) | URL を知っていればだれでも |
| 配信のしかた | 自分の Function が SDK で取り出して返す | ブラウザが Blob の URL から直接取得 |
| 向いている用途 | 機密の書類、ユーザーが上げたファイル、独自の認証 | 大きなメディア、画像、動画、公開してよいファイル |
※Vercel の公式ドキュメント「Vercel Blob」(2026年10月21日に確認)。
保存できるファイルは1つ最大5TB で、ストアは選んだ1つのリージョン(19か所から選択)に置かれます。CDN のキャッシュは既定で最長1か月で、上書きした内容が行き渡るまでに最大60秒かかることがあります。非公開ストアなら、Function から一貫性のある読み取り(consistent read)で最新の内容をすぐ読めます。
S3/Cloudflare R2/Vercel Blob比較
S3: AWS のオブジェクトストレージ。IAM・バケットポリシー・CORS などで権限を細かく決められる分、設定の手間がかかる。
Cloudflare R2: S3互換で、インターネットへのデータ転送(エグレス)が無料。保存は1GB・月あたり0.015ドル。
Vercel Blob: Vercel の CDN と一体で、SDK がシンプル。データ転送は従量課金(iad1 で1GB あたり0.05ドル)。
使い分け: 大規模・マルチクラウドはS3、配信量が多くコスト重視ならR2、Vercel 上の Next.js アプリと一体で手早く作るならVercel Blob。
実装の基本パターン
(1) アップロード: const { url } = await put('file.txt', body, { access: 'public' })(非公開ストアでは access: 'private')
(2) クライアントアップロード: uploadでブラウザから直接アップロード(Vercel経由しない)
(3) 削除: await del(url)
(4) リスト: const { blobs } = await list({ prefix })
(5) 一覧UIから配信URL生成・Next.js Image統合
サーバー経由のアップロード(server upload)には、Vercel の Function が受け取れるリクエストの本文が4.5MB までという上限があります。それより大きいファイルは、サーバーと Vercel Blob の間でトークンをやり取りしたうえで、ブラウザから Blob へ直接送るクライアントアップロードを使います。クライアントアップロードはアップロードにデータ転送の料金がかからない、という点でも有利です。
料金と無料枠(公式)
- Hobby(無料): 保存1GB/月、シンプル操作(キャッシュミス時の読み取りなど)1万回、アドバンスト操作(アップロード・コピー・一覧)2,000回、データ転送10GB まで
- Hobby で上限を超えた場合: 追加の支払いは発生しないが、Blob が使えなくなり、30日たつまで待つ必要がある
- Pro: 月のクレジットから支払い、使い切ると従量課金。単価はリージョンごと(iad1 では保存1GB・月0.023ドル、シンプル操作100万回0.40ドル、アドバンスト操作100万回5.00ドル、データ転送1GB 0.05ドル)
- Enterprise: 個別契約
- 無料の操作: 削除。ダッシュボードでの閲覧やアップロードもアドバンスト操作として数えられる
公式の計算例では、1か月に12万個のファイルを上げ(3割は5分割のマルチパート)、平均50GB を保存し、250万回ダウンロードされてキャッシュヒット率が70%の場合、保存1.15ドル、シンプル操作0.30ドル、アドバンスト操作1.68ドル、データ転送17.50ドル、Fast Origin Transfer 6.30ドルで、合計月26.93ドルです。費用の多くはデータ転送なので、キャッシュに乗らない512MB 超のファイルを避ける、キャッシュの期間を長めに取る、といった工夫が効きます。
S3が向く・Blobが向くケース
- S3が向く: 大規模・マルチクラウド・複雑な権限・ライフサイクル管理
- Blobが向く: Next.js統合・最短実装・スタートアップ・MVP開発
- R2が向く: コスト重視・エッジ統合・Cloudflareエコシステム
実装で詰まる3つの落とし穴
- クライアントアップロードの設計: 4.5MB を超えるファイルは Vercel の Function を経由せず直接Blobへ。サーバー側でトークンを発行する
- アクセス制御: 公開か非公開かはストアを作るときに決まり、あとで変えられない。ユーザーごとの権限が必要なら非公開ストアにして、Function 側で認証してから返す
- データ転送の料金: 大量配信は従量課金。512MB を超えるファイルは毎回キャッシュミスになり、Fast Origin Transfer と CDN リクエストの料金が毎回かかる
30日プラン
- 1週目: Next.js + Vercel Blobでファイルアップロード機能実装
- 2週目: クライアントアップロード・大容量ファイル対応
- 3週目: 画像最適化・Next.js Image連携
- 4週目: 本番運用・料金最適化
関連リンク
Cloudflare R2 の料金と Workers との組み合わせは Cloudflare活用ガイド で整理しています。S3 の料金は条件(リージョン・転送量)で変わるので、AWS の公式料金ページで同じ条件を当てはめて比べてください。
この記事のデータの出典
- Vercel ドキュメント「Vercel Blob」「Vercel Blob Pricing」「Server Uploads」「Client Uploads」(2026年10月21日に確認)
- Cloudflare Developers「R2: Pricing」(2026年10月21日に確認)

