firebase hostingのストレージがいっぱいになった時の対応法

このサイトはfirebase hostingを利用しています。

爆速な静的サイト・ホスティングサービス選び Github Pages vs netlify vs Firebase
Firebaseが速くておどろいた!静的サイトをホスティングするサービスを、ためしに幾つか使用してみて、メリットとデメリットを比較・検討しました。...

今まで無料のSparkプランで必要十分で快適に利用していました。

sparkプランはこんな感じ

  • ストレージ上限 保存済み1GB
  • 転送量上限 10GB/月
  • カスタム ドメインと SSL

しかし、いきなりデプロイできなくなりました。
firebaseのコンソール画面を確認すると・・・ホスティングのストレージの利用量が1GBを超えている とメッセージが。
一瞬、blazeという有料プランへの移行が頭をかすめましたが・・・結果的に不要。
古いデータを削除することで、解決が可能でした。

  1. オーバーした理由は古いデータが原因
  2. 古いバージョンは残り続ける
  3. 過去のバージョンを一括で削除処理する
  4. まとめ:firebase strageを使ってさらに節約できるかも?

結果的に、1GB近くオーバーしてたんですよね。
これまで、普通に使えていたし、課金されてもいません。
倍ほどまで許容してくれるとは、器のデカさに驚きます。

オーバーした理由は古いデータが原因


そもそも、容量を超えるほど、重いデータがありません。
全て静的なhtmlで、軽いものばかり。

思い当たるとすれば、画像類なんですが、大きいもので、数百KBという程度。
1GBなんて、まだまだのはず なんです。

おかしいなーと思ってコンソールをチェック。
「GB保存済み」が、1.9GB近くなっていたんです。

えーっと思ってみてみると、ズラーっと並ぶ、バックアップ用データ。
まさか、これなのでは・・・。

古いバージョンは残り続ける


こちらに全ての答えが載っていました。
Firebase Hosting で自動で古いバージョンを削除する(今のところ)最善の方法

結論、古いバージョンが残り続けるから、ということらしいです。
つまり、古いバージョンを削除すれば済む話。

現状、この古いバージョンを削除する方法は、コンソール画面から、一つづつ削除するしかない
「まとめて削除する」的なUIは用意されていません😓

でもね、一個づつなんてやっていけない・・・。
なんせ、今までのものが残っているので、350以上残っているんですもん。

一括削除するしかない!
というわけで、、上述のサイトで紹介いただいている通りに、作業を進めてみました。

過去のバージョンを一括で削除処理する


上記サイトを見ながら、愚直に以下を実行する!

まずはプロジェクトのルートにクローンします。

$ git clone https://gist.github.com/5be2e807746cdd9549d0c33260871d21.git firebase-hosting-cleanup-script
$ cd firebase-hosting-cleanup-script
$ npm install

一括削除の対象をリストで確認する

いきなり走らせるのも恐ろしいものがありますが、そこは確認できるコマンドが用意されています。

$ node cleanupVersions.js **[**プロジェクト名**]** **[**残したいバージョン名**]**
残したいバージョン名を指定することで、逆に、削除対象となるデータのリストを見ることができます。

僕は最新のだけ指定したので、山ほど出てきました😅

一括削除を実行する

そして実行。
実行するには、先ほどのコマンドの末尾にcommitをつけます。

$ node cleanupVersions.js **[**プロジェクト名**]** **[**残したいバージョン名**]** commit

「ぐわーっ!」と削除が走りました。
350以上あるので、とても時間がかかります
途中、若干不安になったりもしましたが、無事に処理が終わったようです。

最新のID指定して、実際に削除したら、上位の15個ほどは残ってました。

コンソールに反映されるまでは時間がかかる

削除処理が終わり、コンソール上も削除済みというUIに変わっていました。
しかし、利用しているストレージデータの量は変わらず・・・

5~6時間ほど経ってからみてみたところ、エラー表示が消え、無事にデプロイができました。

まとめ:firebase strageを使ってさらに節約できるかも?


コンソール画面から一括削除がないなんて驚きました。
そのうち、何かしら対応できるようになると嬉しいです。

今回助けていただいた方がちらっと言っていたように、「hostingのストレージとは別に、firebase cloud strageを使って、画像のみをそっちから使う」 みたいな方法が取れれば、さらにhostingの無料枠を節約できそうです。

トライしてみたいですね。

Chaos boy

テーマは「脱・思考停止」。
コメントはtwitterでお気軽に。

#hosting