Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@cludden/ssm-config

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cludden/ssm-config

a node.js package that pulls configuration from aws ssm parameter store

latest
Source
npmnpm
Version
1.0.3
Version published
Weekly downloads
287
15.73%
Maintainers
1
Weekly downloads
 
Created
Source

ssm-config

a node.js library for building configuration objects using parameters from AWS SSM Parameter Store. Useful for lambda functions using the node.js runtime.

Features

  • supports all ssm parameter types, including encrypted parameters with type SecureString
  • supports custom validation/parsing allowing for defaults and type coercion
  • supports composing complex configuration using multiple ssm parameters

Installing

# install via NPM
$ npm install --save @cludden/ssm-config

Getting Started

Define some parameters in SSM:

$ aws ssm put-parameter --type String --name /my-app/log/level --value debug
$ aws ssm put-parameter --type String --name /my-app/db --value {"user":"foo","port":3306}
$ aws ssm put-parameter --type SecureString --name /my-app/db/password --value s3cr3t
$ aws ssm put-parameter --type String --name /shared/number --value 11

Build a config object:

import AWS from 'aws-sdk';
import ssmConfig from '@cludden/ssm-config';

const prefix = '/my-app';
const ssm = new AWS.SSM();

const config = await ssmConfig({ prefix, ssm });
console.log(config);
/*
{
  db: {
    user: "foo",
    password: "s3cr3t",
    port: 3306,
  },
  log: {
    level: "debug",
  }
}
*/

With custom validation logic:

import AWS from 'aws-sdk';
import { expect } from 'chai';
import loadConfig from '@cludden/ssm-config';

const prefix = ['/my-app', '/shared'];
const ssm = new AWS.SSM();

function validate(c) {
    if (!Object.prototype.hasOwnProperty.call(c, 'number')) {
        throw new Error('missing required property "number"');
    }
    c.number = parseInt(c.number, 10);
    if (isNaN(c.number) || c.number < 10) {
        throw new Error('"number" must be greater than or equal to 10');
    }
}

const config = await loadConfig({ prefix, ssm, validate });
console.log(config);
/*
{
  db: {
    user: "foo",
    password: "s3cr3t",
    port: 3306,
  },
  log: {
    level: "debug",
  },
  number: 11,
}
*/

Contributing

  • Clone it (git clone git@github.com:cludden/ssm-config.git)
  • Create your feature branch (git checkout -b my-new-feature)
  • Commit your changes using conventional changelog standards (git commit -m 'feat(my-new-feature): Add some feature')
  • Push to the branch (git push origin my-new-feature)
  • Ensure linting/security/tests are all passing
  • Create new Pull Request

Testing

Prerequisites:

# run test suite and generate code coverage
$ docker-compose run ssm-config

# run linter
$ docker-compose run ssm-config npm run lint

# run security scan
$ docker-compose run ssm-config npm run sec

License

Licensed under the MIT License

Copyright (c) 2017 Chris Ludden

FAQs

Package last updated on 26 Feb 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