API KeyなどをFirebase Cloud Functionsの環境変数に設定したい場合は、以下のようなコマンドで行うことができます。
環境変数の設定とアクセス方法
$ firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
このとき、注意点としては、キーの名前には大文字が使えないのと、2つ以上のキーをドットでつないでやる必要があります。
例えば、foo.bar
のようにキーの名前をする必要があります。
設定したあとに、
$ firebase deploy --only functions
でデプロイしてやれば、晴れてCloud Functionsのコード上から環境変数にアクセスすることができるようになります。
const id = functions.config().someservice.id // => "THE CLIENT ID"
ローカルエミュレートでアクセスしようとするとエラーになる
一方、開発中はいちいちデプロイせずに、
$ firebase serve --only functions
として、ローカルエミュレートを起動して、開発を行っている人は多いかと思います。
この状態で、先程設定した環境変数にアクセスしようとすると、
Cannot read property 'id' of undefined`
となってエラーとなってしまいます。
ローカルエミュレート時には環境変数を別途吐き出す必要がある
解決方法としては、functions
ディレクトリで、
$ firebase functions:config:get > .runtimeconfig.json
として、.runtimeconfig.json
ファイルを用意してやる必要があります。
こうしてやるとローカルでの開発時にも問題なく環境変数を取り込んでアクセスすることができるようになります。
もちろん、このJSONファイルの中身は機密情報が入っていることもあるかと思いますから、間違ってGitHubで公開してしまわないようにするケアが必要になります。
注意しましょう。