Firebase Local Emulatorでfunctions:config:setによる環境変数を利用したい場合

公開日時
更新日時

Firebase Functionsでは process.env によるユーザ独自の環境変数設定ができない。

代わりに functions:config:set でconfigオブジェクトを設定できる。

yarn run firebase functions:config:set someservice.key="THE API KEY"

function内では↓で設定した値を取得できる。

functions.config().someservice.key

本番環境では上記の設定で問題ないが、ローカル開発用にFirebase Local Emulator Suiteを使っている場合にconfigオブジェクトが取得できずハマったのでメモを残しておく。

前提として ./functions にFirebase Functionsのコードが配置されているとする。

./functions/.runtimeconfig.json を配置すると、ローカルでのconfigオブジェクトとして認識される。

本番環境のconfigオブジェクトをコピーする場合は↓でできる。

yarn run --silent firebase functions:config:get > functions/.runtimeconfig.json

functions/.runtimeconfig.json は↓のようになっている。

{
  "someservice": {
    "key": "THE API KEY"
  }
}

ローカルのみの設定に変更したい場合は .runtimeconfig.json の内容を更新すれば良い。

.runtimeconfig.json にはAPI Key等が含まれる可能性があるので .gitignore に追加してリポジトリ管理対象から外しておく。

これでローカル環境でもconfigオブジェクトが利用できるようになった。

今回はFirebase管理者が自分のみだったので手軽さを優先してconfigオブジェクトにシークレット情報を格納したが、より厳密なアクセス制限が必要な場合は「Secret Manager」を組み合わせるのが良いと思われる。

参考


Related #firebase

Firestoreの複合インデックスを削除する

CLI経由で削除する必要があった

Firebase Web SDK v9

_this.auth.addAuthTokenListener is not a function

8.6.5にダウングレードした

Firebase Summit 2021