はじめに
学習用にReactで作っているTodoアプリのデータの保存にSupabaseを利用しています。
Supabaseから「プロジェクトを一時停止する」という不穏なメールが届いたのでその原因と対処方法をまとめます。
Supabaseのプロジェクトが一時停止された原因
Supabaseの無料プランでは7日間利用がないと自動でプロジェクトの利用が停止になるみたいです。
Supabase側のクラウドのリソースの節約のためにこうしているんだとか。
プロジェクトの一時停止は何の通知もなく行われるのではなく、メールで7日間利用がない場合はプロジェクトを一時停止する案内が届きます。私の場合は6日間利用が無い段階でメールが来ていました。
以下は一時停止案内メール文の抜粋。
クラウドのリソースを節約するために、すべてのプロジェクトをスキャンし、7日間以上十分な活動が見られないプロジェクトを特定しました。
あなたの組織に属するプロジェクトは、そうしたプロジェクトの1つであり、近い将来一時停止される予定です。
現在、プロジェクトは一時停止されていませんが、十分な活動が継続しない場合は、自動的に一時停止されます。プロジェクトが一時停止されると一時停止したことを確認するため、改めてメールをお送りします。
一時停止日から90日以内であれば、 ダッシュボードから一時停止を解除できます。それ以降はプロジェクトの一時停止を解除することはできませんが、データのダウンロードは可能です。今後の自動一時停止を防ぐには、 請求設定からProプランにアップグレードしてください。
90日以内であれば、Supabaseのプロジェクトのダッシュボードから一時停止を解除出来るそう。これについてはSupabaseのドキュメントにも記載がありますが、ドキュメントの方では1年以内ならダッシュボードから一時停止の解除が出来るとなっています。いやどっちやねん。
私はこのメールに気づいていなかったため、プロジェクトが停止されてしまいました。プロジェクトが停止されると以下のメール文が来ます。
クラウドのリソースを最適化するため、無料プランのプロジェクトは7日間アクティビティがない場合、自動的に一時停止されます。あなたの所属組織のプロジェクトは一時停止されました。
プロジェクトの一時停止は、 ダッシュボードから90日以内であれば再開できます。この期間を過ぎるとプロジェクトを復元することはできませんが、データはダウンロード可能な状態で保持されます。今後の自動一時停止を防ぐには、 請求設定からProプランにアップグレードしてください。
詳細については、 ドキュメントをご覧ください。ご質問がある場合は、 サポートチケットを送信してください。弊社のチームがお手伝いいたします。
このメールが届くと、アプリでは以下のエラーが出てデータの追加・削除・取得が一切出来なくなります。
TypeError: fetch failed
プロジェクトの一時停止を解除する方法
Supabaseへアクセスして一時停止されてしまったプロジェクトのダッシュボードから一時停止を解除をしましょう。
ダッシュボードにアクセスすると、このようなポップアップが表示されているので「Resume project」をクリックします。ポップアップ内に「You can resume this project from the dashboard until 15 Nov 2027.」とあるので一時停止解除期限は1年みたいですね。Supabaseさんメールの文面間違ってるよ。。。
「Resume project」をクリックするとさらにポップアップが表示されるので「Resume」をクリックします。
ローディング画面を挟んだ後にプロジェクトの画面に自動遷移されますが、すぐに一時停止が解除されるわけではないみたいです。
5分くらい経つと「Restoration complete!」と表示されるのでこれで一時停止が解除されます。「Return to project」をクリックしてプロジェクトのダッシュボードに戻ったらアプリの方でデータの追加・取得・削除が出来るか確認しましょう。
プロジェクトの一時停止期間を過ぎたらどうなるのか
プロジェクトの一時停止期間が過ぎるとダッシュボードから一時停止を解除出来なくなるようです。ただ、バックアップを取得していればそのデータを新しいプロジェクトで使えるみたいです。
プロジェクトが変わるのでAPIキーは書き換えになりますが、プロジェクトが完全に停止されてしまった場合は少々手間ですがこちらの方法で復元させましょう。
一時停止させない方法はある?
一時停止させたくない場合は毎日アプリを触るか、一時停止告知メールが来たらアプリを動かすのが確実な方法です。ただ、忙しかったりすると忘れがちになりますし、かと言ってあまり使っていないのに有料プランにはしたくないですよね。
対策としてGitHub Actionsのcronを使って定期的にSupabaseにアクセスさせることで防ぐ方法があるみたいです。
Supabaseは1日複数回のアクセスを行うことでプロジェクトの一時停止の対象から外れるとドキュメントに明記されているのでこちらの方法を使えば一時停止に怯えることは無くなります。
ただ1時間に1回とか高頻度でアクセスするのは流石にやり過ぎなのと、元々Supabaseのリソース節約のために行われている機能のため、頻繁に利用しているのであれば有料プランに切り替えたを検討した方が良いと思います。
おわりに
英語のメールで「あなたのプロジェクトは利用停止しました」と来たのでびっくりしました。Supabase自体は素晴らしいサービスで今後も利用していきたいのでこういう仕様があることを知れてよかったです。



