🌤
Firebase Functionsでデフォルトで利用できる環境変数一覧
FirebaseFunctions のコード内で取得できる環境変数は TypeScript では process.env
で確認できます。今回は以下のように Https でアクセスできる API を作ってそれを叩いて確認しました。
import * as ff from 'firebase-functions'
const functions = ff.region('asia-northeast1')
export const checkEnvVars = functions.https.onRequest(async (req, res) => {
res.json(process.env)
})
Node.js 12 系
{
"NO_UPDATE_NOTIFIER": "true",
"FUNCTION_TARGET": "checkEnvVars",
"NODE_OPTIONS": "--http-server-default-timeout=0",
"NODE_PATH": "/workspace/node_modules",
"NODE_ENV": "production",
"PWD": "/srv",
"HOME": "/root",
"FIREBASE_CONFIG": "{\"projectId\":\"YOUR_PROJECT_ID\",\"databaseURL\":\"https://YOUR_PROJECT_ID.firebaseio.com\",\"storageBucket\":\"YOUR_PROJECT_ID.appspot.com\",\"locationId\":\"asia-northeast1\"}",
"DEBIAN_FRONTEND": "noninteractive",
"PORT": "8080",
"K_REVISION": "2",
"K_SERVICE": "checkEnvVars",
"SHLVL": "1",
"FUNCTION_SIGNATURE_TYPE": "http",
"PATH": "/workspace/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"_": "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework",
"GCLOUD_PROJECT": "YOUR_PROJECT_ID"
}
Node.js 10 系
Node.js 12 系と目立った違いはありませんでした。NODE_OPTIONS
に少し違いがあったり、K_REVISION
の数値が増えていたり(デプロイごとに increment される模様)するくらいです。
{
"NO_UPDATE_NOTIFIER": "true",
"FUNCTION_TARGET": "checkEnvVars",
"NODE_OPTIONS": "--max-old-space-size=256",
"NODE_PATH": "/workspace/node_modules",
"NODE_ENV": "production",
"PWD": "/srv",
"HOME": "/root",
"FIREBASE_CONFIG": "{\"projectId\":\"YOUR_PROJECT_ID\",\"databaseURL\":\"https://YOUR_PROJECT_ID.firebaseio.com\",\"storageBucket\":\"YOUR_PROJECT_ID.appspot.com\",\"locationId\":\"asia-northeast1\"}",
"DEBIAN_FRONTEND": "noninteractive",
"PORT": "8080",
"K_REVISION": "3",
"K_SERVICE": "checkEnvVars",
"SHLVL": "1",
"FUNCTION_SIGNATURE_TYPE": "http",
"PATH": "/workspace/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"_": "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework",
"GCLOUD_PROJECT": "YOUR_PROJECT_ID"
}
Node.js 14 beta
この記事を公開した翌日に、Node.js 14 beta が利用できるようになったので、早速試してみました。S2A_ACCESS_TOKEN
というのが増えていますね 🧐 何に利用しているものなのでしょうね。軽く調べた感じではわかりませんでした。かちなみに、beta 版なので GA するときにはなくなっているかもしれませんし突然消えてもおかしくありません。
{
"NO_UPDATE_NOTIFIER": "true",
"FUNCTION_TARGET": "checkEnvVars",
"NODE_PATH": "/workspace/node_modules",
"NODE_ENV": "production",
"PWD": "/srv",
"HOME": "/root",
"FIREBASE_CONFIG": "{\"projectId\":\"YOUR_PROJECT_ID\",\"databaseURL\":\"https://YOUR_PROJECT_ID.firebaseio.com\",\"storageBucket\":\"YOUR_PROJECT_ID.appspot.com\",\"locationId\":\"asia-northeast1\"}",
"DEBIAN_FRONTEND": "noninteractive",
"PORT": "8080",
"K_REVISION": "4",
"S2A_ACCESS_TOKEN": "YOUR_ACCESS_TOKEN",
"K_SERVICE": "checkEnvVars",
"SHLVL": "1",
"FUNCTION_SIGNATURE_TYPE": "http",
"PATH": "/workspace/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"_": "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework",
"GCLOUD_PROJECT": "YOUR_PROJECT_ID"
}
おわりに
昔、Qiita に記事を書いたときは、Node.js 8 系から 10 系に移行されたときで、結構破壊的な変更があったので 12 ではどうなのかが気になって調べてみました。特に違いは無いという結果なので、その他に問題がなさそうであればこれからは 12 系を使うようにしましょう!バージョンが高いほうが言語としてパフォーマンスが良くなっているので、Functions をパフォーマンスも向上するはずです。
いつのまにか 12 系の Beta が取れていたことに気づいて驚いているボク。
Discussion