Closed15

Cloudflare R2を画像配信サーバーにする

akahigegakahigeg

要件

  • 独自ドメイン
  • https
  • 全画像ファイルの容量は64GB。年5GB~6GBほど増えていく
akahigegakahigeg

S3との費用比較

S3はhttps化にCloudFrontを利用するのが一般的なので、CloudFront前提で比較する

ストレージ費用

  • R2 GBあたり0.015/月 + 10GB無料
  • S3 GBあたり$0.023/月

リクエスト費用

  • R2 月1000万reqまで無料 + $0.36/100万req
  • CloudFront 月1000万reqまで無料 + $0.90/100万req($0.009/1万req)

転送量

  • R2 無料
  • CloudFront 月1TBまで無料 + $0.114/GB(日本からのアクセス)
    • S3とCloudFront間は無料
akahigegakahigeg

画像のサイズはサムネイル、小、中、大、オリジナルがある。

サイトが月間5万PVでPVあたり10の中画像を読み込むとするとリクエスト回数は50万/月。
画像1枚1MBとして1*500000=500GB/月。

オリジナル画像は10MBを超えるものが多くあるが、どれくらいアクセスされるものかデータがなくよく分からない。
そのためCloudFrontの無料枠内に収まるか不安(最大で33MBのものがあるので画像の中のひとつが軽く注目されて1000アクセスとか行ってしまうだけでも33GB)

リクエスト費用と転送費用に関しては意外とS3+CloudFrontでも無料範囲で行けるかと思ったが、スパイクで死ぬ要素があるのは避けておきたい。

ちなみに今後サイトのアクセスが増える見込みはほぼない。むしろ減少傾向。
ただしオリジナルの画像サイズはさらに大きくなる可能性がある。

akahigegakahigeg

計算が間違っていなければR2で行く判断が正しそうだ

akahigegakahigeg

Cloudflare使ったことがなかったのでアカウントを作るところから。
サインアップしてR2を利用するためにクレカを登録した。コンソールの言語を日本語にしているとクレカ登録がエラーになって進まなかったので、英語にしたらうまく行った。

akahigegakahigeg

Wranglerを使った認証。

ターミナルからwranglerを入れる。

npm install -g wrangler

wranglerを実行する。

wrangler login
zsh: command not found: wrangler

why?
よく分からないので適当にnpxする。

npx wrangler login
 ⛅️ wrangler 2.14.0 
--------------------
Attempting to login via OAuth...
(略)

ブラウザCloudflareのOAuthの画面に遷移して以下のように聞かれる

Allow Wrangler to make changes to your Cloudflare account?

おもむろにallowをポチ。ターミナルに以下のように表示されてログイン成功。

Successfully logged in.
akahigegakahigeg

バケットを作る

CloudflareのコンソールからR2のバケットを作る。

バケットの名前を入れるだけでほかに設定することはない。S3に比べて楽だ。

akahigegakahigeg

アップロードはコマンドラインからやりたいが設定すればs3 syncとかできるのか?

akahigegakahigeg

おっと、独自ドメイン使うにはCloudflareで管理されてるやつじゃないとダメなんだ。
しかもjpドメインは扱ってないということオワタ。

akahigegakahigeg

へーへーへー。
これは今踏んどいてよかったやつかもしれん。

まあ独自ドメインじゃなくてもええか?うーん。

akahigegakahigeg

R2.devサブドメインで公開するようにしてCORS設定してみたけど、どこのドメインからでも読めるな。

画像URLのドメインからどのサイトに所属する画像なのか分からないうえで、よそのドメインから読み込まれ放題になるのはちょっと嫌な気がする。

akahigegakahigeg

S3+CloudFrontは1TB超えるリスクがけっこう高そうなのでレンサバにした。
ブログ用途でさくらのレンタルサーバー借りてるからそれに相乗りさせればいいやってなった。

このスクラップは2023/04/10にクローズされました