🔥

Firebase Storageが初期化できない(使えない/エラー/うまくいかない)

に公開

はじめに

Firebase Storageを初期化してもFirebaseコンソールのStorageタブでは初期化後の画面が表示されず、初期化前の画面のままで、セキュリティルールも更新できず詰んだので、解決までの記録を共有します。

前提

  • Firestore、Functionsのリージョンはasia-northeast1で合わせている
  • 課金プランは従量課金のBlazeプラン

初期化でやったこと

  • FirebaseコンソールのStorageタブの「使ってみる」ボタンをタップ
  • 画面に従って下記で初期化
    • バケットオプション
      • 「すべてのロケーション」を選択
        • ロケーション:「ASIA-NORTHEAST1」
        • アクセス頻度:「標準」
    • セキュリティルール
      • 「本番環境モードで開始する」を選択
  • 最後に作成ボタンを押下

上記を行った結果、「不明なエラーが発生しました」的な赤色のポップアップが表示された。(正確な文言までは覚えてない)

なんか作成失敗してそうだなーと思って、Storageタブをリロードしたところ、やはり作成できてなさそうで初期化前の画面しか表示されない。

Flutterアプリから対象Firebaseプロジェクトに接続してStorageへのアップロード処理を実行してみたが、下記エラー発生。

[firebase_storage/unknown] The operation couldn’t be completed. (com.google.HTTPStatus error 400.)

原因は、そもそもStorageが初期化できていない、または、セキュリティルールがデフォルトなので書き込みは拒否された、のどちらかだと考えた。

解決のためにやったこと

  • まずは本当にStorageが作成されていないのか確認をした。
    • GCPコンソールのCloud Storageにアクセスして確認したところ、なんと{プロジェクト名}.firebasestorage.appのバケットは作成されていた。
  • バケットは作成されているのでセキュリティルールさえ更新すれば使えるようになるのでは?と仮定した
    • Firebaseコンソール上からはそもそも初期化前画面しか表示されずセキュリティルール更新ができないので、Firebase CLIを用いてfirebase deploy --only storagestorage.rulesのデプロイにより更新を試みたが下記エラー発生
      Error: Firebase Storage has not been set up on project '{プロジェクト名}'.
      Go to https://console.firebase.google.com/project/o{プロジェクト名}/storage
      and click 'Get Started' to set up Firebase Storage.
      

ここで八方塞がりだと判断してFirebase公式サポートに問い合わせた。

問い合わせ結果

  • 1度目の回答
    • 「作成はきちんとできてるから再確認してみてね。表示されないならシークレットモードで試してみてね。それでもダメならHARファイルちょうだい。」と言われた。
    • シークレットモードで試してみたがダメだったのでHARファイルを提出。
  • 2度目の回答
    • HARを調べた結果、Firebaseへのリクエストで404が発生しているとのこと
    • よって下記を試してくれとのこと
      • ブラウザのキャッシュと Cookie をクリア
      • 別のブラウザを使用
      • 別のデバイスを使用
      • 別のネットワークを使用
    • 全て試してもダメだったので、再度問い合わせ
  • 3度目の回答
    • 私のGCPプロジェクトを確認していたところ、たしかにバケットがすでに作成されていることが確認できた。よって、Firebaseコンソール上でデフォルトバケットを作成するときに既存エラーが発生している。とのこと。
    • よって、GCPコンソールからすでに作成されたバケットを削除してから、再度FirebaseコンソールからStorage経由で初期化をし直してくれ、とのこと。
    • これでうまくいった

結論

Storage初期化時にFirebaseもしくはGCPで何らかのエラーが発生して、Firebaseコンソール(フロントエンド)とGCP(バックエンド)とで不整合が発生していたと考えられる。
結局、すでに作成されたバケットを削除してから再初期化で成功。
うーん、GAFAMとはいえど、エラーは多発しますね。困ったら即サポート連絡がよろしい。

おわりに

個人開発で超シンプルなゴルフメモアプリをリリースしています。
https://apps.apple.com/app/apple-store/id6746414134?pt=127781617&ct=zenn_1&mt=8
ラウンド時のスコアだけでなく、日頃の練習のちょっとした感覚や気づき、ゴルフにかかった費用、各クラブごとの意識や飛距離、を簡単にメモすることができます。

ぜひDLをお願いいたします!(レビューもいただくと大大大感謝感激雨あられです🥺)

Discussion