gcf-runtime-config
v0.0.7
Published
Environment Variables within Google Cloud Functions through Runtime Config
Downloads
8
Readme
gcf-runtime-config
gcf-runtime-config
helps you
get environment variables within Google Cloud Functions (GCF) through
Runtime Config
.
Usage
Install it:
$ npm install --save gcf-runtime-config
Enable Google Cloud's Runtime Config API:
$ 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
Sample function code:
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).
Deploy:
$ gcloud beta functions deploy testExpressApp --trigger-http
Test:
$ curl https://<YOUR_PROJECT>.cloudfunctions.net/testRuntimeConfig
{"PAYPAL_SECRET_KEY":"NOTREAL1234!@#$","STRIPE_SECRET_KEY":"YESREAL1234!@#$"}
Cleanup:
$ gcloud beta functions delete testExpressApp
API
runtimeConfig.getVariables(config[, objectify=true])
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.
Why
We needed a way to inject secret keys to a Google Cloud Function. Storing keys in code base is wrong.
License
MIT