gcf-runtime-config

0.0.7 • Public • Published

gcf-runtime-config

gcf-runtime-config helps you get environment variables within Google Cloud Functions (GCF) through Runtime Config.

CircleCI Coverage Status MIT License version

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!@#$"}]

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

Package Sidebar

Install

npm i gcf-runtime-config

Weekly Downloads

1

Version

0.0.7

License

MIT

Unpacked Size

10.1 kB

Total Files

4

Last publish

Collaborators

  • erezro
  • kedmi
  • olevy