🔥
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
のバケットは作成されていた。
- GCPコンソールのCloud Storageにアクセスして確認したところ、なんと
- バケットは作成されているのでセキュリティルールさえ更新すれば使えるようになるのでは?と仮定した
- Firebaseコンソール上からはそもそも初期化前画面しか表示されずセキュリティルール更新ができないので、Firebase CLIを用いて
firebase deploy --only storage
でstorage.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コンソール上からはそもそも初期化前画面しか表示されずセキュリティルール更新ができないので、Firebase CLIを用いて
ここで八方塞がりだと判断してFirebase公式サポートに問い合わせた。
問い合わせ結果
- 1度目の回答
- 「作成はきちんとできてるから再確認してみてね。表示されないならシークレットモードで試してみてね。それでもダメならHARファイルちょうだい。」と言われた。
- シークレットモードで試してみたがダメだったのでHARファイルを提出。
- 2度目の回答
- HARを調べた結果、Firebaseへのリクエストで404が発生しているとのこと
- よって下記を試してくれとのこと
- ブラウザのキャッシュと Cookie をクリア
- 別のブラウザを使用
- 別のデバイスを使用
- 別のネットワークを使用
- 全て試してもダメだったので、再度問い合わせ
- HARを調べた結果、Firebaseへのリクエストで404が発生しているとのこと
- 3度目の回答
- 私のGCPプロジェクトを確認していたところ、たしかにバケットがすでに作成されていることが確認できた。よって、Firebaseコンソール上でデフォルトバケットを作成するときに既存エラーが発生している。とのこと。
- よって、GCPコンソールからすでに作成されたバケットを削除してから、再度FirebaseコンソールからStorage経由で初期化をし直してくれ、とのこと。
- これでうまくいった
結論
Storage初期化時にFirebaseもしくはGCPで何らかのエラーが発生して、Firebaseコンソール(フロントエンド)とGCP(バックエンド)とで不整合が発生していたと考えられる。
結局、すでに作成されたバケットを削除してから再初期化で成功。
うーん、GAFAMとはいえど、エラーは多発しますね。困ったら即サポート連絡がよろしい。
おわりに
個人開発で超シンプルなゴルフメモアプリをリリースしています。
ラウンド時のスコアだけでなく、日頃の練習のちょっとした感覚や気づき、ゴルフにかかった費用、各クラブごとの意識や飛距離、を簡単にメモすることができます。ぜひDLをお願いいたします!(レビューもいただくと大大大感謝感激雨あられです🥺)
Discussion