FirebaseHostingのストレージ上限エラーになった時の対応法
2020-06-11
(LastUpdated: 2020-06-11)
公式にバックアップ上限数の設定ができるようになりました。
firebase hostingの画面から簡単にできます。
これを少なめに設定しておけば、それ以上は自動で削除されます。
このサイトはfirebase hostingを利用しています。
それまで、僕の使い方では無料のSparkプランで必要にして十分。 快適に利用していました。
しかし、ある日突然、デプロイできなくなりました。
firebaseのコンソール画面を確認すると・・・ ホスティングの ストレージの利用量が1GBを超えているとメッセージ が。
一瞬、blazeという有料プランへの移行が頭をかすめました。
しかし、データを見直してみると・・・。
バックアップ用のデータが、デプロイ毎に作られていたんですね。 そのおかげで、かなりデータが溜まっている状態でした。
ロールバックが非常に簡単なので、重宝するのですが、それが仇となってしまっていました。
ホスティングの上限は、バックアップデータを含んだ数値なんだと学びました。
さて、この解決方法は、古いデータを削除すること。 コンソール画面に行ってみると・・・なんと。
まとめて削除することができない! 何百とあるログを、一つ一つ手作業なんて・・・ありえない!
そんな困り果てた状態でしたが、とても良いツールを発見しました。 今回はその辺りについて、書いていきたいと思います。
ちなみに、firebaseのsparkプランでの、hostingの概要は、こんな感じ ・ストレージ上限:保存済み1GB ・転送量上限:10GB/月 ・カスタム・ドメインとSSL
オーバーした理由は古いデータが原因
そもそも、容量を超えるほど、重いデータがありません。 全て静的なhtmlで、軽いものばかり。
思い当たるとすれば、画像類なんですが、大きいもので、数百KBという程度。 1GBなんて、まだまだのはず なんです。
おかしいなーと思ってコンソールをチェック。 「GB保存済み」が、1.9GB近くなっていたんです。
えーっと思ってみてみると、ズラーっと並ぶ、バックアップ用データ。 まさか、これなのでは・・・。
古いバージョンは残り続ける
こちらに全ての答えが載っていました。
Firebase Hosting で自動で古いバージョンを削除する(今のところ)最善の方法
()サイトがクローズされているようです)
結論、古いバージョンが残り続けるから、ということらしいです。 つまり、古いバージョンを削除すれば済む話。
現状、この古いバージョンを削除する方法は、コンソール画面から、一つづつ削除するしかない 。 「まとめて削除する」的なUIは用意されていません😓
でもね、一個づつなんてやっていけない・・・。 なんせ、今までのものが残っているので、350以上残っているんですもん。
一括削除するしかない! というわけで、上述のサイトで紹介いただいている通りに、作業を進めてみました。
こちらのツールを活用させていただきます。 https://gist.github.com/mbleigh
過去のバージョンを一括で削除処理する方法
上記サイトを見ながら、愚直に以下を実行する! https://gist.github.com/mbleigh このツールのプロジェクトを、ローカルにクローンします。
$ 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指定して、実際に削除を実行してみました。 しかし、1個だけ残る訳ではなく、上位の15個ほどは残ってました。
コンソールに反映されるまでは時間がかかる
削除処理が終わり、コンソール上も削除済みというUIに変わっていました。 しかし、利用しているストレージデータの量は変わらず・・・
5、6時間ほど経ってもう一度確認してみたところ、エラー表示が消えてました。
その後、いつもの通りブログをアップデートしてみたら・・・無事にデプロイができた!😄
まとめ:firebase strageを使ってさらに節約できるかも?
コンソール画面から一括削除がないなんて驚きました。 そのうち、何かしら対応できるようになると嬉しいです。
今回助けていただいた方がちらっと言っていたように、「hostingのストレージとは別に、firebase cloud strageを使って、画像のみをそっちから使う」 みたいな方法が取れれば、さらにhostingの無料枠を節約できそうです。
トライしてみたいですね。