Cloud Functions for Firebaseをローカルエミュレータで起動する時に環境変数で詰まった
初めまして。PrAha Inc. 代表取締役兼エンジニアの松原です。
Cloud Functions for Firebaseを毎回デプロイして動作確認するのは手間なのでローカルエミュレータを使おうとしたらpermission周りで想定動作と異なる動きがあったのでメモしておきます
何をしたのか
Firebase CLIを入れて以下のコマンドを実行。
セットアップとかの手順はこの辺りに記載されているので割愛します
```
firebase serve --only functions
```
するとこんな感じで立ち上がります
```
functions: Preparing to emulate functions.
✔ functions: notify: http://localhost:5000/xxxxxx-xxx/us-central1/notify
```
で、curlしてみます。
想定動作
Firebase CLIにログインした状態でエミュレータのエンドポイントを叩けば、Cloud Functions for Firebaseが呼び出される
実際の動作
```
info: User function triggered, starting execution
info: { Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.
```
権限が無い、と怒られました
なにゆえ?
ここに書いてある通り、エミュレータを起動する時は、環境変数に設定ファイルのパスを指定する必要があります。なのでdirenvを使って、.envrcに環境変数を書いていました。
と考えて、エミュレータの環境変数を設定する方法を調べていたら
ありました。
`.runtimeconfig.json`にこんな感じで環境変数を設定します。
```
教訓を川柳にした
読まれると
思い込むなよ