You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP

gcf-runtime-config

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
g

gcf-runtime-config

Environment Variables within Google Cloud Functions through Runtime Config

0.0.7
latest
68

Supply Chain Security

100

Vulnerability

97

Quality

79

Maintenance

100

License

Version published
Weekly downloads
4
Maintainers
3
Weekly downloads
 
Created
Issues
19

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

FAQs

Package last updated on 20 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts