在之前這個 Blog 的圖片都是存在一個 Blogger 上,把它當成圖床使用,但是這樣管理上不方便,而且它好像不支援 Webp 格式。
在我在 Cloudflare 上購買網域並將從 GitHub Pages 轉移到 Cloudflare Pages 上後,我也想用 Cloudflare R2 來儲存並管理這些圖片。
R2 是一個兼容 S3 的物件儲存服務,目前 R2 提供的免費額度如下(官方說明):
類型 | 免費額度(每月) |
---|---|
儲存空間 | 10 GB-月 |
A 類操作 | 1 百萬次請求 |
B 類操作 | 1 千萬次請求 |
資料傳輸到網路 (Egress) | 基本免費 |
A 類操作主要包括建立、列出、複製和刪除物件,以及管理貯體的作業。
B 類操作主要包括讀取物件及其相關聯中繼資料,以及讀取貯體設定的作業。
我想這個免費額度對我來說相當夠用了,而且就算真的不小心超額了,我覺得 R2 的收費也不會很貴,不會不小心就產生天價帳單。而且兼容 S3 代表未來我要再次轉移資料的話會方便很多。
那為了要把大量的圖片傳到 R2 上,我使用 Rclone 將 R2 的 Bucket 掛載到電腦上,這樣就可以用平常操作檔案和資料夾的方式上傳檔案到 R2 了。
我是使用 Scoop 安裝 Rclone:
scoop bucket add main
scoop install main/rclone
另外還要安裝 WinFsp,一樣透過 Scoop:
scoop bucket add nonportable
scoop install nonportable/winfsp-np
再來要產生 R2 的 API Token(要先建立好 Bucket)。在 R2 管理頁面 > API > 管理 API 權杖 > 建立 API 權杖,選擇「系統管理員讀取和寫入」並調整你要的設定後建立 API 權杖。最主要會需要 3 個東西:存取金鑰識別碼、秘密存取金鑰 、針對 S3 用戶端使用管轄區域特定端點,將這 3 個值記好。
建立 Rclone 連線設定:
rclone config
依序選擇並輸入:
- name: 自己選擇,如
cfr2
- type: s3
- provider: Cloudflare
- access_key_id: 存取金鑰識別碼
- secret_access_key: 秘密存取金鑰
- region: auto
- endpoint: 針對 S3 用戶端使用管轄區域特定端點
或是 rclone.conf
看起來會類似:
[cfr2]
type = s3
provider = Cloudflare
access_key_id = a51b4y38b08xxxxxxxxxxxxxxxxxxxx
secret_access_key = 17b8z616k7fd2c3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
region = auto
endpoint = https://54218acxxxxxxxxxxxxxxxxxxxxxxxx.r2.cloudflarestorage.com
再來就可以實際掛載了,這裡掛載到 X:
。<BUCKET>
記得改成你自己的 Bucket 名稱:
rclone mount cfr2:<BUCKET> X: --vfs-cache-mode writes
另外 Cloudflare 還有提供一個 Images 的服務,專門針對影像的儲存和最佳化等功能,未來也可以研究看看。
參考: