3.2.0 • Published 4 years ago

aws-param-store v3.2.0

Weekly downloads
23,498
License
BSD-3-Clause
Repository
github
Last release
4 years ago

Build Status npm version

aws-param-store

Module for loading parameter-store values from AWS SSM

Features

  • Gets parameters by name(s) or path
  • Update parameters using put operations.
  • Recursively resolves paths and decodes parameters by default
  • Paginates results automatically
  • Supports both synchronous and asynchronous querying of parameters
  • Fully async (Promises) and synchronous
  • Can run inside AWS Lambda environment
  • AWS Lambda Node.js 12.x compatible

Installation

Install via npm.

npm install aws-param-store --save

Note: aws-param-store does not contain a dependency on aws-sdk and it should be installed within your application.

Getting Started

const awsParamStore = require( 'aws-param-store' );

awsParamStore.getParametersByPath( '/project1/service1/production' )
    .then( (parameters) => {

        // do something here
    });

If your AWS region is not set in your environment variables, then it can be set programmatically by supplying options when calling any of the api methods:

const awsParamStore = require( 'aws-param-store' );

awsParamStore.getParametersByPath( '/project1/service1/production', { region: 'us-east-1' } )
    .then( (parameters) => {

        // do something here
    });

API

Overview

Most API method calls in this library have both asynchronous and synchronous versions. When an asynchronous version is called, a Promise is returned to resolve the value once the operation completes. When an options parameter is allowed, it can be used to specify specific AWS service options such as the region. All of the getParameter* methods will request that the values are decoded. If you require further control, please use the parameterQuery() method.

async getParameter( name [, options] )

Gets a parameter by name. This method returns a promise that resolves the Parameter.

const { getParameter } = require( 'aws-param-store' );

getParameter( '/project1/my-parameter', { region: 'us-east-1' } )
    .then( (parameter) => {

        // Parameter info object for '/project1/my-parameter'
    });

getParameterSync( name [, options] )

Gets a parameter by name. This method will block until the operation completes.

const { getParameterSync } = require( 'aws-param-store' );

let parameter = getParameterSync( '/project1/my-parameter',
																  { region: 'us-east-1' } );

// Parameter info object for '/project1/my-parameter'

async getParameters( names [, options] )

Gets one or more parameters by name. This method returns a promise that resolves an object that contains Parameters and InvalidParameters.

const { getParameters } = require( 'aws-param-store' );

getParameters( ['/project1/my-parameter1', '/project1/my-parameter2'],
							 { region: 'us-east-1' } )
    .then( (results) => {

        // results.Parameters will contain an array of parameters that were found
		// results.InvalidParameters will contain an array of parameters that were
		//                           not found
    });

getParametersSync( names [, options] )

Gets one or more parameters by name. This method will block until the operation completes, and will return an object that contains Parameters and InvalidParameters.

const { getParametersSync } = require( 'aws-param-store' );

let results = getParametersSync( ['/project1/my-parameter1', '/project1/my-parameter2'],
							     			   			 { region: 'us-east-1' } );

// results.Parameters will contain an array of parameters that were found
// results.InvalidParameters will contain an array of parameters that were
//                           not found

async getParametersByPath( path [, options] )

Gets parameters by recursively traversing the supplied path. This method returns a promise that resolves the parameters that were found.

const { getParametersByPath } = require( 'aws-param-store' );

getParametersByPath( '/project1' )
    .then( (parameters) => {

		// parameters contains an array of parameter objects
    });

getParametersByPathSync( path [, options] )

Gets parameters by recursively traversing the supplied path. This method will block until the operation completes, and will return a list of matching parameters.

const { getParametersByPathSync } = require( 'aws-param-store' );

let parameters = getParametersByPathSync( '/project1' );

// parameters contains an array of parameter objects

async putParameter( name, value, type [, options] )

Puts parameter. This method returns a promise that resolves to the version returned back.

const { putParameter } = require( 'aws-param-store' );

putParameter('key', 'value1,value2', 'StringList', {region: 'us-east-1', Overwrite: false})
    .then( (results) => {

		// results is the version of the value created
    });

putParameterSync( name, value , type [, options] )

Puts parameter. This method. This method will block until the version returned back.

const { putParameterSync } = require( 'aws-param-store' );

let results = putParameterSync('key', 'securedstring', 'SecureString', {region: 'us-east-1'});

ParameterQuery

Instances of ParameterQuery can be created by calling parameterQuery( [options] ). This object is implementation behind the getParameter* methods, and allows further control over how the calls are made to resolve parameters.

ParameterQuery.path( p )

Sets the path name not be queried.

Returns a reference to the ParameterQuery instance.

ParameterQuery.named( name )

Sets the name or names (if an array) to be queried.

Returns a reference to the ParameterQuery instance.

ParameterQuery.decryption( enabled = true )

Indicates that the decryption of the values is enabled/disabled.

Returns a reference to the ParameterQuery instance.

ParameterQuery.recursive( enabled = true )

Enables or disables recursive operations when resolving parameters by path.

Returns a reference to the ParameterQuery instance.

ParameterQuery.overwrite( enabled = true )

Enables or disables overwrite for put operations.

Returns a reference to the ParameterQuery instance.

ParameterQuery.type( type = 'SecureString' )

Sets the parameter type for put operations. Valid values are String, StringList, and SecureString.

Returns a reference to the ParameterQuery instance.

async ParameterQuery.execute()

Executes the query based on path or name(s) that were selected.

Returns a Promise that resolves the parameter results.

ParameterQuery.executeSync()

Executes the query based on path or name(s) that were selected. This operation will block until complete.

Feedback

We'd love to get feedback on how to make this tool better. Feel free to contact us at feedback@vandium.io

License

BSD-3-Clause