gcf-runtime-config
helps you
get environment variables within Google Cloud Functions (GCF) through
Runtime Config
.
$ npm install --save gcf-runtime-config
$ gcloud services enable runtimeconfig.googleapis.com
Create a new config:
$ gcloud beta runtime-config configs create EXAMPLE_ENVIRONMENT
$ gcloud beta runtime-config configs variables \
set PAYPAL_SECRET_KEY "NOTREAL1234!@#$" \
--config-name EXAMPLE_ENVIRONMENT \
--is-text
$ gcloud beta runtime-config configs variables \
set STRIPE_SECRET_KEY "YESREAL1234!@#$" \
--config-name EXAMPLE_ENVIRONMENT \
--is-text
const gcfRuntimeConfig = require('gcf-runtime-config');
exports.testRuntimeConfig = (req, res) => {
gcfRuntimeConfig
.getVariables('EXAMPLE_ENVIRONMENT')
.then(variablesObj => res.send(variablesObj))
.catch(err => res.send(err));
};
The example
directory is a ready-to-deploy sample function that uses
gcf-runtime-config
and extracts a runtime config (environment).
$ gcloud beta functions deploy testExpressApp --trigger-http
$ curl https://<YOUR_PROJECT>.cloudfunctions.net/testRuntimeConfig
{"PAYPAL_SECRET_KEY":"NOTREAL1234!@#$","STRIPE_SECRET_KEY":"YESREAL1234!@#$"}
$ gcloud beta functions delete testExpressApp
Arguments:
- config is a the name of the config, in our example its
EXAMPLE_ENVIRONMENT
. - objectify defaults to true, it means the function resolves to an object
where its keys and values are the variable names and values.
- objectify=true in our example results in:
{"PAYPAL_SECRET_KEY":"NOTREAL1234!@#$","STRIPE_SECRET_KEY":"YESREAL1234!@#$"}
- objectify=false in our example results in:
[{"name":"STRIPE_SECRET_KEY","updateTime":"2018-05-20T09:53:11.383980095Z","text":"YESREAL1234!@#$"},{"name":"PAYPAL_SECRET_KEY","updateTime":"2018-05-20T09:53:09.683262561Z","text":"NOTREAL1234!@#$"}]
- objectify=true in our example results in:
Returns:
A Promise
that depending on objectify
resolves to either an object where its
keys and values are the config's parameters and values or to an array of parameter objects.
We needed a way to inject secret keys to a Google Cloud Function. Storing keys in code base is wrong.
MIT