前提
- 2019/12/09現在の情報です
- Firebase Cloud Functions
- GCPのCloudFunctionsではない
- Runtime Node.js 10
- Node.js 10はBetaなのでご注意を
TL;DR
- Nodejs 8で取れてた環境変数が10系だと取れない可能性があるので気をつけよう
- Nodejs 10ではこいつらが使えるぞ
ドキュメント
環境変数とは
Node.jsだと process.env
で取れるやつの話です。こいつは、FirebaseやGCP側が予め設定しておいてくれる変数が存在します。
下記のようにすれば自分でも設定できます。
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
経緯
process.env.FUNCTION_NAMEがundefinedになるなあと思ってたらNode.js 10 からはK_SERVICEを使えと書いてあった。知らなかったー。https://t.co/cAxR40YnqO
— mogaming | 実験 (@_mogaming) December 9, 2019
使える環境変数一覧
実際にNode.js 10のRuntimeでFirebase Cloud Functionsをデプロイして、process.env
の中身を書き出してみました。 デプロイ時の関数名はSampleFunction
、regionはasia-northeast1
です。一部***
でマスクしてます。あくまで2019/12/09現在で取れたものなので、今後取れなくなる可能性があります。
{"NO_UPDATE_NOTIFIER":"true","FUNCTION_TARGET":"SampleFunction","NODE_OPTIONS":"--max-old-space-size=256","NODE_ENV":"production","PWD":"/srv/functions","HOME":"/root","DEBIAN_FRONTEND":"noninteractive","PORT":"8080","K_REVISION":"2","K_SERVICE":"SampleFunction","SHLVL":"1","FUNCTION_SIGNATURE_TYPE":"http","PATH":"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","OLDPWD":"/srv","_":"../start-functions-framework","FIREBASE_CONFIG":"{\"projectId\":\"***\",\"databaseURL\":\"***\",\"storageBucket\":\"***.appspot.com\",\"locationId\":\"asia-northeast1\"}","GCLOUD_PROJECT":"***","VIPSHOME":"/target"}
ドキュメントに書いてあるとおり、いろいろ取れなくなったり名前が変わったりしています。 GCP側のドキュメントには GCLOUD_PROJECT
はセットしないって書いてありますが、ここに書いてあるとおりFirebase側がセットしてくれているようです。