Cloudflare 基礎

R2 物件儲存是什麼?零出流量費的 S3 替代方案,備份與圖床的好選擇

R2 是 Cloudflare 推出的物件儲存服務,功能定位類似 AWS S3,最大的差異是不收出流量費(egress fee):資料被下載、被讀取都不會產生流量帳單,只收儲存空間與操作次數的費用。它相容 S3 API,rclone、restic 這些現成工具改個端點就能用,特別適合異地備份與圖床這類讀取量大的用途。
R2 物件儲存是什麼?零出流量費的 S3 替代方案,備份與圖床的好選擇:文章重點卡

R2 物件儲存是什麼?零出流量費的 S3 替代方案,備份與圖床的好選擇

用過雲端儲存服務的人,多半有過這種經驗:存資料的費用便宜得驚人,帳單卻比想像中厚。翻開明細才發現,大頭不是儲存費,而是「出流量費」,也就是資料離開機房、被人下載時計的費用。存進去免費或極便宜,拿出來才跟你算帳,這是傳統雲端儲存的商業模式。

Cloudflare 的 R2 物件儲存直接把這一條砍掉:出流量一律免費。我自己拿它放網站的每日異地備份,也看過很多人拿它當圖床。這一篇講清楚 R2 是什麼、零出流量費為什麼重要、S3 相容 API 怎麼接現有工具,以及實際使用時要注意的幾件事。

你將學到什麼

物件儲存

跟硬碟與資料庫不同的第三種存法。

零出流量費

R2 與傳統雲儲存最大的差異。

S3 相容

rclone、restic 等現成工具直接接。

實務注意

備份與圖床各自的坑與配套。

物件儲存是什麼:第三種存資料的方式

先把「物件儲存」這個詞講清楚。我們熟悉的存法有兩種:檔案系統(硬碟上的資料夾與檔案)與資料庫(結構化的表格)。物件儲存是第三種:每個檔案是一個「物件」,放在叫做值區(bucket)的容器裡,用一把鍵(key,通常長得像路徑)來存取,透過 HTTP API 上傳與下載。

它犧牲了檔案系統的即時修改能力(物件通常整個覆寫,不做局部編輯),換來近乎無限的容量、高耐久性與便宜的單價。備份檔、圖片、影片、日誌、匯出報表這類「寫一次、讀多次、不太改」的資料,物件儲存就是最合適的家。這個領域的始祖與事實標準是 AWS 的 S3,R2 則是 Cloudflare 交出的同類產品。

零出流量費:R2 真正的賣點

雲端儲存的帳單通常由三部分組成:儲存空間、操作次數,以及出流量(egress)。前兩項大家都收,差異不大;真正的分水嶺在第三項。

傳統雲儲存對「資料離開機房」計費,你的檔案越受歡迎、被下載越多次,帳單就越厚,而且這一項最難預估:一次爆紅、一次全量還原、一次搬家,都可能瞬間灌出可觀的流量費。

R2 的定價把出流量這一項直接歸零:資料被讀取、被下載,不論多少,都不計流量費。你付的是儲存空間(按容量與時間)與 API 操作次數(寫入類的 Class A 與讀取類的 Class B 費率不同),兩者也都有免費額度。

具體數字會調整,以官方定價頁為準;但「出流量免費」這個結構性差異,讓帳單從難以預估變成可以估算,這對讀取量大的用途是質變。

傳統雲儲存儲存空間費操作次數費出流量費(最難預估)Cloudflare R2儲存空間費操作次數費出流量:0 元
傳統物件儲存的帳單有三塊,其中出流量最難預估;R2 把出流量歸零,只剩儲存與操作兩塊可預估的費用。

S3 相容 API:現成工具改個端點就能用

R2 聰明的地方在於沒有另起爐灶,而是相容 S3 的 API。這代表整個 S3 生態系的工具幾乎都能直接拿來用:同步工具 rclone、備份工具 restic、程式端的 boto3 或各語言的 S3 SDK,只要把端點(endpoint)改成 R2 的網址、換上 R2 的金鑰,就能照常運作,不用學一套新東西。

R2 的端點長這樣:每個帳號一組專屬網址,格式是「帳號 ID 加上 r2.cloudflarestorage.com」。設定工具時有個小坑:官方給你的是一整條含帳號 ID 的完整網址,有些工具的設定欄位卻只要你填其中一段,直接整條貼上會拼出錯誤的主機名稱,而錯誤訊息只會說找不到主機。

貼設定值之前,先看清楚欄位要的是哪一段。

用途一:異地備份

備份的鐵則是至少一份放在異地:主機所在的機房出事,備份不能跟著陪葬。

R2 拿來當異地備份點非常合適,原因有三:儲存單價便宜,平常只進不出幾乎沒有操作費;還原的那一天不管抓多少資料回來,都沒有流量費,不會在最狼狽的時刻收到最厚的帳單;工具端用 rclone 或 restic 排程加密上傳,一晚就能架好。

兩個配套一定要做。第一,備份要加密再上傳,而加密的通關密語要另外保存,弄丟它等於所有舊備份永久報廢。第二,定期做還原演練:真的把備份抓下來、解開來、確認使用者資料都在。沒有還原過的備份只是一個看起來很安心的檔案,檔案大小正常不代表內容完整。

用途二:圖床與靜態資產

第二個典型用途是圖床:部落格的圖片、網站的靜態資產、可下載的檔案。做法是開一個值區、綁上自訂網域(網域要在 Cloudflare 代管),圖片就自動走 Cloudflare 的 CDN,全球訪客就近取得快取。讀取量再大也不會產生流量費,這正是圖床最怕的成本項。

  • 公開存取要自己開:值區預設是私有的,要嘛綁自訂網域,要嘛開官方提供的開發網址。正式站建議一律用自訂網域,才吃得到快取與自己的網域名聲。
  • 快取要設定:透過自訂網域供檔時,搭配快取規則把圖片的快取時間拉長,命中率才會漂亮。
  • 程式端記得帶 User-Agent:Cloudflare 的服務會擋掉某些預設的程式用戶端標頭(例如 Python urllib 的預設值),被擋時回的錯誤訊息容易誤導方向,自己帶一個正常的 User-Agent 就能避開。

什麼時候不選 R2

公平起見也講清楚界線。你的系統如果深度綁定 AWS 生態,例如大量使用 S3 的事件通知去觸發 Lambda、依賴多層儲存分級的自動搬移,或是資料就近要跟 EC2 上的運算放在同一個機房,那留在 S3 通常更順。

R2 最亮眼的場景是「讀取量大、出流量占帳單大頭」與「跨雲備份、不想被單一雲綁死」這兩種;反之,資料只進不出又極少讀取的冷儲存,各家差距就沒那麼大,值得逐項比價,數字一律以各家官方定價頁為準。

一句話帶走R2 是相容 S3 API 的物件儲存,最大賣點是出流量費歸零:備份還原不怕天價帳單、圖床讀取量再大也不心疼。記得備份要加密加還原演練,圖床要綁自訂網域吃 CDN 快取。
本文源起本文依 Cloudflare 官方文件與酒Ann 的實際使用經驗整理編寫。官方資源可在 Cloudflare Developers 查閱。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

R2 真的完全免費嗎?
不是。免費的是「出流量」這一項:資料被下載不另外計費。儲存空間與 API 操作次數(分成寫入類的 Class A 與讀取類的 Class B)仍然照用量計費,也有一定的免費額度。詳細額度與單價,以官方定價頁為準。
R2 跟 AWS S3 有什麼差別?
定位相同,都是物件儲存;API 也相容,多數 S3 工具改個端點就能用。最大的差別在計費:S3 對資料傳出(egress)收費,R2 不收。反過來說,S3 的生態系與進階功能(例如儲存分級、事件通知的完整度)目前仍比較豐富,兩者取捨看用途。
拿 R2 當圖床,圖片會很慢嗎?
不會,前提是接上自訂網域。把 R2 值區綁到你自己在 Cloudflare 代管的網域之後,圖片走的就是 Cloudflare 的 CDN 節點,訪客就近取得快取,速度與一般 CDN 圖床相同,而且來源端讀取不計流量費。
備份放 R2 就安心了嗎?
還差一步:還原演練。備份沒有實際還原過就不算數,要定期把備份檔抓下來解開,確認使用者資料真的都在、密碼真的解得開。尤其是加密備份,金鑰或通關密語一旦弄丟,舊備份就永久打不開了,金鑰本身要另外妥善保存。