parameter-store
v0.0.11
Published
Fetch key/value pairs from AWS Parameter Store and set them as environmental variables.
Downloads
17
Maintainers
Readme
parameter-store
This is a tiny package comprised of three utility functions to handle loading environmental variables/secrets from AWS SSM.
loadEnv can be used to load environmental variables from SSM at a particular path/hierarchy into process.env.
patchEnv patches a plain object with values from AWS SSM using the syntax { SUPER_SECRET: "${ssm:/app/SECRET}" }
patchJson patches a json configuration file using patchEnv.
Example
Basic Usage
loadEnv(path: string, config: { region: 'us-east-1' }) => Promise<{}>
loads environmental variables at a hierarchy into process.env.
const { loadEnv } = require('parameter-store')
loadEnv('/prefix', { region: 'us-east-1' })
.then(() => console.log(process.env))
patchEnv(environment: {}) => Promise<{}>
Takes a plain object, where some values are expected to refer to an SSM parameter using the familiar serverless syntax: "${ssm:PATH_TO_ENV_VAR}".
const { patchEnv } = require('parameter-store')
const env = {
"PORT": "3000",
"API_KEY": "${ssm:/app/API_KEY}"
}
patchEnv(env, { region: 'us-east-1' })
.then(patched => {
console.log(patched)
// => {
// "PORT": "3000",
// "API_KEY": "03cae8ea-48c2-4fd0-aa70-533e0cf4a801"
// }
})
patchJson(path: string, key: string | Array<string>, config: { 'us-east-1' }) => Promise<() => void>
- path: path to a json configuration file
- key: a key to get the environment object to mutate (uses lodash.get)
- config: AWS configuration for
new AWS.SSM(config)
Returns a restore function that restores the json configuration file to its original state.
in up.json:
{
"name": "app",
"environment": {
"API_KEY": "${ssm:/app/API_KEY}"
}
}
const { patchJson } = require('parameter-store')
patchJson('up.json', 'environment')
.then(restore => {
console.log(require('fs').readFileSync('up.json'))
// {
// "name": "app",
// "environment": {
// "API_KEY": "03cae8ea-48c2-4fd0-aa70-533e0cf4a801"
// }
// }
restore() // restore up.json to original state
})