Firebase Emulator Suiteで起動しているFunctionsから本番のFirestoreにアクセスする

公開日時
更新日時

Firebase Local Emulator Suiteを使うとFunctionsやFirestoreのローカル環境を作ることができる。

ふと、「ローカルのFunctionsを使いつつ、Firestoreだけ本番環境に接続するのはできるのだろうか?」と思い試してみたところできた。

使う機会はほぼないと思うが対応方法をメモしておく。

通常は↓でエミュレータを起動するが、

yarn run firebase emulators:start

functionsのみエミュレータを起動するようにする。

yarn run firebase emulators:start --only functions

この状態でローカルのFunctionsを呼び出すと、firebase-admin SDKは本番のFirestoreにアクセスするようになる。

なお、ローカルから本番のFirestoreに書き込もうとした場合、エミュレータのログに「Google API requested!」が記録される。

i  functions: Beginning execution of "someFunction"
⚠  Google API requested!
   - URL: "https://oauth2.googleapis.com/token"
   - Be careful, this may be a production service.
i  functions: Finished "someFunction" in ~1s

参考


Related #firebase

SharedArrayBuffer updates in Android Chrome 88 and Desktop Chrome 92

クロスオリジン分離対応を実施

Firebase Functions呼び出し時に Error: function terminated. が発生した場合

firebase functions:logで詳細を確認できる

Cloud BuildでFirebase Hostingのデプロイを行う

リポジトリへのpush以外をトリガーにしたい場合に使用

Firebase FunctionsでonCallで実装しているにも関わらずCORSエラーが発生した場合

Cloud Functions(GCP)の管理画面を確認してみる

JestでFirestoreセキュリティルールのテストを書く

Github ActionsでCIを回せるようになった

Local Emulator Suiteを使ってFirestoreのローカル開発を行う際に初期データ(seeds)を用意する

ローカル管理画面でDeveloperToolsを開くとwindow.firestoreが使える