firebase hostingでdeploy済の複数Webサイトの一つを停止(disable)する

こんにちは。てぃろです。

今回はfirebase Hostingサービスで公開していたWebサイトを一旦停止したい(非公開にしたい)ときの話です。

特に今回はプロジェクトのHostingに複数のWebサイトを登録しているときに、その中でも特定のWebサイトだけ停止して他は残しておきたいプロジェクト単位での停止はしたくないあとで復旧もしたい。というときの話です。

これがググっても、コマンドがちょこっと書いてあるだけで詳しいコマンドの解説がなかったので調べたことをココに残しておこうと思います。

実行環境は以下です。

  • firebas-tools : 10.0.1

なお、以下ではfirebase-toolsのインストールなどの共通的な手順については紹介しません。それらについては公式ドキュメントなどをご参照ください。

先に結論を書くと、以下のコマンドでWebサイトを単独で停止することができます。

firebase hosting:disable --project <project id> --site <site id>

では、このコマンドを実行するための準備を順番に見ていきます。

Webサイトを停止しよう

停止コマンドはこちらです。

firebase hosting:disable

とよく紹介されていますが、これを実行してもプロジェクトを指定していない場合には、エラーが出て止まります。私の場合は指定していないのでコマンドは停止し、以下のような解説が出ます。

firebase hosting:disable 

Error: No currently active project.
To run this command, you need to specify a project. You have two options:
- Run this command with --project <alias_or_project_id>.
- Set an active project by running firebase use --add, then rerun this command.
To list all the Firebase projects to which you have access, run firebase projects:list.
To learn about active projects for the CLI, visit https://firebase.google.com/docs/cli#project_aliases

つまり、プロジェクトを指定して停止したいときには以下のようにコマンドを打つことが必要ということです。

firebase hosting:disable --project <project id>

では、これを実行するための準備をしていきましょう。

プロジェクトの確認

まずホスティングを停止する対象のプロジェクトを指定する必要があります。それにはProject IDが必要です。

Project IDはfirebase上で表示される名前ではありません。以下の画像のように赤枠で囲ったほうです。

多くの場合表示名と同じなのですが、一般的な単語を使っている場合他のProject IDを競合しないように末尾に5桁程度の英数字が付与されている場合がありますので、ちゃんとチェックしてみることをオススメします。

Project IDは、もちろんCLIでも確認可能です。以下のコマンドです。

firebase projects:list

こうして確認したProject IDを先に紹介したコマンドのオプションで指定します。

ちなみに、プロジェクトは事前に以下のコマンドで指定しておくこともできます。これを実行しておけばいちいちコマンドのオプションでProject IDを指定しておく必要はありません。

firebase use --add <project id>

ですが、操作するプロジェクトが複数になった場合には意図せず違うプロジェクトに対してコマンドを打ってしまうことがあるかもしれないので注意が必要だと思います。(なので、私は使ってないです)

停止するWebサイトの指定方法

これでProject IDがわかったので、停止できるとおもいますが、よく見てみるとWebサイトそのものを指定していません。

おそらくこのままコマンドを実行すると、サイトを指定しろと怒られるか、全部のWebサイトが停止されてしまうかもしれません。(怖くて試せてない)

悩んでもわからないので、ヘルプを見てみましょう。

firebase hosting:disable -h
Usage: firebase hosting:disable [options]

stop serving web traffic to your Firebase Hosting site

Options:
  -f, --force            skip confirmation
  -s, --site <siteName>  the site to disable
  -h, --help             output usage information

ありました!--siteでサイトの指定ができるみたいです!では今度はsiteNameをチェックしてみましょう。

今度はCLIでチェックしてみます。

firebase hosting:sites:list --project <project id>

すると、Site IDとして表示されている列が見つかると思います。これが実はsiteNameだったようです。

つまり、Webサイトを単独で停止するには以下のコマンドが必要なのでした。

firebase hosting:disable --project <project id> --site <site id>

実際にこれを実行してみました。

firebase hosting:disable --project <project id> --site <site id>
? Are you sure you want to disable Firebase Hosting for the site <site id>
This will immediately make your site inaccessible! Yes
✔  Hosting has been disabled for <site id>. Deploy a new version to re-enable.

このようにしてすぐにコマンドは実行終了して、以下の画像のようにWebサイトは停止されました。

実際にアクセスしてみても404のページが表示されるだけでした。停止成功です!

Webサイトを復旧しよう

復旧する方法については、実は先程の停止コマンドの実行結果の最後にそのやり方が書いてありました。

それはつまり、復旧するには再デプロイしなさい、ということでした。ということで、再デプロイしましょう。

再デプロイするには、デプロイコマンドをそのまま使えばOKです。サイトを指定してのコマンドだと以下のようになります。

firebase deploy --only hosting:<target name> --project <project id> 

ここで示しているtarget nameは事前に自分で定義しておく必要があります。すでに複数のWebサイトを運用されている場合には設定済の可能性が高いです。

詳しくは公式ドキュメントを御覧ください。

以上で停止されていたWebサイトがまた閲覧できるようになりました。

最後に

今回はfirebase hostingで複数あるWebサイトのうち一つを指定して停止する方法と復旧する方法を紹介しました。

見ていただいてわかると思いますが、これはあくまでhostingを停止するだけであってサイトそのものを削除するのではありませんので、安心してお使いください。

Webサイトの公開期間が終わったというときなど、よくある状況だと思いますのでぜひ参考にしてみてください。