Discovering the default process.env
variables provided in cloud functions and app engine services on Google Cloud Platform covering Node.js 16, 18 and 20 as well as Gen1 and Gen2 functions. Including a simple project for retrieving the values.
For cloud functions or app engine services using Node.js runtimes GCP will provide a default set of environment variables accessible through process.env
. In this article we will explore how this env vars look like for different versions of Node.js in these GCP services.
A very simple project for deploying the needed functions and app engine services to discover these env vars in your own GCP account is also provided.
Table of Contents
Cloud functions environment variables
See below for the default process.env
variables provided by GCP cloud functions with different Node.js runtimes. Click the link to call a provided function and retrieve the most current result.
{
LANGUAGE: "en_US:en",
NODE_OPTIONS: "--max-old-space-size=192",
K_REVISION: "node20-gen2-get-env-00003-sip",
PWD: "/workspace",
FUNCTION_SIGNATURE_TYPE: "http",
PORT: "8080",
CNB_STACK_ID: "google.gae.22",
NODE_ENV: "production",
CNB_GROUP_ID: "33",
NO_UPDATE_NOTIFIER: "true",
HOME: "/root",
LANG: "en_US.UTF-8",
K_SERVICE: "node20-gen2-get-env",
GAE_RUNTIME: "nodejs20",
SHLVL: "0",
CNB_USER_ID: "33",
LC_ALL: "en_US.UTF-8",
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
FUNCTION_TARGET: "getEnv",
K_CONFIGURATION: "node20-gen2-get-env",
_: "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework"
}
{
LANGUAGE: "en_US:en",
NODE_OPTIONS: "--max-old-space-size=192",
K_REVISION: "3",
PWD: "/workspace",
FUNCTION_SIGNATURE_TYPE: "http",
PORT: "8080",
CNB_STACK_ID: "google.gae.22",
NODE_ENV: "production",
CNB_GROUP_ID: "33",
NO_UPDATE_NOTIFIER: "true",
HOME: "/root",
LANG: "en_US.UTF-8",
GCF_BLOCK_RUNTIME_go112: "410",
K_SERVICE: "node20-get-env",
GAE_RUNTIME: "nodejs20",
SHLVL: "0",
CNB_USER_ID: "33",
LC_ALL: "en_US.UTF-8",
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
GCF_BLOCK_RUNTIME_nodejs6: "410",
FUNCTION_TARGET: "getEnv",
_: "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework"
}
{
LANGUAGE: "en_US:en",
NODE_OPTIONS: "--max-old-space-size=192",
K_REVISION: "node18-gen2-get-env-00003-gic",
PWD: "/workspace",
FUNCTION_SIGNATURE_TYPE: "http",
PORT: "8080",
CNB_STACK_ID: "google.gae.22",
NODE_ENV: "production",
CNB_GROUP_ID: "33",
NO_UPDATE_NOTIFIER: "true",
HOME: "/root",
LANG: "en_US.UTF-8",
K_SERVICE: "node18-gen2-get-env",
GAE_RUNTIME: "nodejs18",
SHLVL: "0",
CNB_USER_ID: "33",
LC_ALL: "en_US.UTF-8",
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
FUNCTION_TARGET: "getEnv",
K_CONFIGURATION: "node18-gen2-get-env",
_: "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework"
}
{
LANGUAGE: "en_US:en",
NODE_OPTIONS: "--max-old-space-size=192",
K_REVISION: "3",
PWD: "/workspace",
FUNCTION_SIGNATURE_TYPE: "http",
PORT: "8080",
CNB_STACK_ID: "google.gae.22",
NODE_ENV: "production",
CNB_GROUP_ID: "33",
NO_UPDATE_NOTIFIER: "true",
HOME: "/root",
LANG: "en_US.UTF-8",
GCF_BLOCK_RUNTIME_go112: "410",
K_SERVICE: "node18-get-env",
GAE_RUNTIME: "nodejs18",
SHLVL: "0",
CNB_USER_ID: "33",
LC_ALL: "en_US.UTF-8",
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
GCF_BLOCK_RUNTIME_nodejs6: "410",
FUNCTION_TARGET: "getEnv",
_: "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework"
}
{
NO_UPDATE_NOTIFIER: "true",
FUNCTION_TARGET: "getEnv",
NODE_OPTIONS: "--max-old-space-size=192",
NODE_ENV: "production",
PWD: "/workspace",
HOME: "/root",
DEBIAN_FRONTEND: "noninteractive",
PORT: "8080",
K_REVISION: "node16-gen2-get-env-00003-rok",
K_SERVICE: "node16-gen2-get-env",
SHLVL: "1",
GAE_RUNTIME: "nodejs16",
FUNCTION_SIGNATURE_TYPE: "http",
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
K_CONFIGURATION: "node16-gen2-get-env",
_: "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework"
}
{
GCF_BLOCK_RUNTIME_nodejs6: "410",
NO_UPDATE_NOTIFIER: "true",
FUNCTION_TARGET: "getEnv",
GCF_BLOCK_RUNTIME_go112: "410",
NODE_OPTIONS: "--max-old-space-size=192",
NODE_ENV: "production",
PWD: "/workspace",
HOME: "/root",
DEBIAN_FRONTEND: "noninteractive",
PORT: "8080",
K_REVISION: "3",
K_SERVICE: "node16-get-env",
SHLVL: "1",
GAE_RUNTIME: "nodejs16",
FUNCTION_SIGNATURE_TYPE: "http",
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
_: "/layers/google.nodejs.functions-framework/functions-framework/node_modules/.bin/functions-framework"
}
App engine environment variables
See below for the default process.env
variables provided by GCP app engine with different Node.js runtimes. Click the link to call a provided service and retrieve the most current result.
{
S2A_ACCESS_TOKEN: "xxxx",
GAE_MEMORY_MB: "384",
NO_UPDATE_NOTIFIER: "true",
LANGUAGE: "en_US:en",
GAE_INSTANCE: "00c61b117c1d6452581b06dcb5f23b1f1bc9a6c6aaebd47203070aa80a23270580b3af586743534bbd4012aa004c1437350e8cda1dc423b4be",
HOME: "/root",
PORT: "8081",
NODE_OPTIONS: "--max-old-space-size=300 ",
GAE_SERVICE: "node20-get-env",
PATH: "/srv/node_modules/.bin/:/workspace/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
CNB_GROUP_ID: "33",
CNB_USER_ID: "33",
GAE_DEPLOYMENT_ID: "454320553896815573",
LANG: "en_US.UTF-8",
GOOGLE_CLOUD_PROJECT: "tsmx-gcp",
GAE_ENV: "standard",
PWD: "/workspace",
GAE_APPLICATION: "h~tsmx-gcp",
LC_ALL: "en_US.UTF-8",
GAE_RUNTIME: "nodejs20",
GAE_VERSION: "20230819t221144",
NODE_ENV: "production",
CNB_STACK_ID: "google.gae.22"
}
{
S2A_ACCESS_TOKEN: "xxxx",
GAE_MEMORY_MB: "384",
LANGUAGE: "en_US:en",
NO_UPDATE_NOTIFIER: "true",
GAE_INSTANCE: "00c61b117cf7b9059c648a310d860a5f66a16dc1761710ac82df9a38392a9624cbdebd451f3978bb6cfc0640f5680590beee2d4afe3b214a879c",
HOME: "/root",
PORT: "8081",
NODE_OPTIONS: "--max-old-space-size=300 ",
GAE_SERVICE: "node18-get-env",
PATH: "/srv/node_modules/.bin/:/workspace/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
CNB_GROUP_ID: "33",
CNB_USER_ID: "33",
GAE_DEPLOYMENT_ID: "454320535647197464",
LANG: "en_US.UTF-8",
GOOGLE_CLOUD_PROJECT: "tsmx-gcp",
GAE_ENV: "standard",
GAE_APPLICATION: "h~tsmx-gcp",
LC_ALL: "en_US.UTF-8",
PWD: "/workspace",
GAE_RUNTIME: "nodejs18",
GAE_VERSION: "20230819t221044",
NODE_ENV: "production",
CNB_STACK_ID: "google.gae.22"
}
{
S2A_ACCESS_TOKEN: "xxxx",
NO_UPDATE_NOTIFIER: "true",
GAE_MEMORY_MB: "384",
GAE_INSTANCE: "00c61b117c641ca0a31d2baf0347dc63fc3e870aee7b8707eccebd1f31d5b5372af69bd5178f08349fb3f3ee5ac460efeae28ed842e96fe861",
HOME: "/root",
PORT: "8081",
NODE_OPTIONS: "--max-old-space-size=300 ",
GAE_SERVICE: "node16-get-env",
PATH: "/srv/node_modules/.bin/:/workspace/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
GAE_DEPLOYMENT_ID: "454320521333239759",
DEBIAN_FRONTEND: "noninteractive",
GOOGLE_CLOUD_PROJECT: "tsmx-gcp",
GAE_ENV: "standard",
GAE_APPLICATION: "h~tsmx-gcp",
PWD: "/workspace",
GAE_RUNTIME: "nodejs16",
GAE_VERSION: "20230819t220949",
NODE_ENV: "production"
}
Project for discovering process.env in different services and runtimes
Alongside with this article the gcp-get-env project is provided on GitHub. This simple Node.js solution ships a function and an express application that can be deployed either as a GCP cloud function or an app engine service. Simply use the provided scripts in package.json to deploy as a function or service with different runtimes.
For that you’ll need an active GCP account and a configured and ready-to-go gcloud
CLI on your machine. For details on the installation & configuration see here.
The following deployment scripts are provided in package.json. Simply call npm run [scriptname]
to deploy.
scriptname | deploys | function/service name |
---|---|---|
deploy-node16-func | cloud function with runtime Node.js 16 Gen 1 | node16-get-env |
deploy-node16-func-gen2 | cloud function with runtime Node.js 16 Gen 2 | node16-gen2-get-env |
deploy-node18-func | cloud function with runtime Node.js 18 Gen 1 | node18-get-env |
deploy-node18-func-gen2 | cloud function with runtime Node.js 18 Gen 2 | node18-gen2-get-env |
deploy-node20-func | cloud function with runtime Node.js 20 Gen 1 | node20-get-env |
deploy-node20-func-gen2 | cloud function with runtime Node.js 20 Gen 2 | node20-gen2-get-env |
deploy-node16-gae | app engine service with runtime Node.js 16 | node16-get-env |
deploy-node18-gae | app engine service with runtime Node.js 18 | node18-get-env |
deploy-node20-gae | app engine service with runtime Node.js 20 | node20-get-env |
Please note that the deployed functions and services would be publicly accessable and may cause charges to your GCP account.
Happy coding 🙂