2020/12/10追記
Node.js 12系や10系のGA版の情報は以下URLよりご確認ください!
https://zenn.dev/moga/articles/firebase-functions-env-vars
前提
- 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側がセットしてくれているようです。