FirebaseHostingのストレージ上限エラーになった時の対応法

2020-06-11

(LastUpdated: 2020-06-11)


公式にバックアップ上限数の設定ができるようになりました。

firebase hostingの画面から簡単にできます。

これを少なめに設定しておけば、それ以上は自動で削除されます。


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

それまで、僕の使い方では無料のSparkプランで必要にして十分。 快適に利用していました。

しかし、ある日突然、デプロイできなくなりました。

firebaseのコンソール画面を確認すると・・・ ホスティングの ストレージの利用量が1GBを超えているとメッセージ が。

一瞬、blazeという有料プランへの移行が頭をかすめました。

しかし、データを見直してみると・・・。

バックアップ用のデータが、デプロイ毎に作られていたんですね。 そのおかげで、かなりデータが溜まっている状態でした。

ロールバックが非常に簡単なので、重宝するのですが、それが仇となってしまっていました。

ホスティングの上限は、バックアップデータを含んだ数値なんだと学びました。

さて、この解決方法は、古いデータを削除すること。 コンソール画面に行ってみると・・・なんと。

まとめて削除することができない! 何百とあるログを、一つ一つ手作業なんて・・・ありえない!

そんな困り果てた状態でしたが、とても良いツールを発見しました。 今回はその辺りについて、書いていきたいと思います。

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

ちなみに、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を使ってさらに節約できるかも?

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

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

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


タグに関連づけられた記事

AM2

JAMstacなブログにまつわる、技術的なことなどを記録しています。