夜七時

2019-02-08

Firebase Hostingの古いデータを削除して容量を確保する


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

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の無料枠を節約できそうです。

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

永井 大介

© 二〇二五