aws-param-store
Version:
Library for loading parameters from AWS Parameter Store
224 lines (145 loc) • 6.83 kB
Markdown
[](https://travis-ci.org/vandium-io/aws-param-store)
[](https://badge.fury.io/js/aws-param-store)
# aws-param-store
Module for loading parameter-store values from AWS SSM
## Features
* Gets parameters by name(s) or path
* Recursively resolves paths and decodes parameters by default
* Paginates results automatically
* Supports both synchronous and asynchronous querying of parameters
* Uses Promises for asynchronous calls
* Can run inside AWS Lambda environment
* AWS Lambda Node.js 8.10.x compatible
* Lightweight and does not require additional dependencies other than the AWS-SDK
## 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
```js
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 `newQuery()`:
```js
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.
### `getParameter( name [, options] )`
Gets a parameter by name. This method returns a promise that resolves the Parameter.
```js
const awsParamStore = require( 'aws-param-store' );
awsParamStore.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.
```js
const awsParamStore = require( 'aws-param-store' );
let parameter = awsParamStore.getParameterSync( '/project1/my-parameter',
{ region: 'us-east-1' } );
// Parameter info object for '/project1/my-parameter'
```
### `getParameters( names [, options] )`
Gets one or more parameters by name. This method returns a promise that resolves
an object that contains `Parameters` and `InvalidParameters`.
```js
const awsParamStore = require( 'aws-param-store' );
awsParamStore.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`.
```js
const awsParamStore = require( 'aws-param-store' );
let results = awsParamStore.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
```
### `getParametersByPath( path [, options] )`
Gets parameters by recursively traversing the supplied path. This method returns
a promise that resolves the parameters that were found.
```js
const awsParamStore = require( 'aws-param-store' );
awsParamStore.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.
```js
const awsParamStore = require( 'aws-param-store' );
let parameters = awsParamStore.getParametersByPathSync( '/project1' );
// parameters contains an array of parameter objects
```
### `putParameter( name, value, type [, options] )`
Puts parameter. This method returns a promise that resolves to the version returned back.
```js
const awsParamStore = require( 'aws-param-store' );
awsParamStore.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.
```js
const awsParamStore = require( 'aws-param-store' );
let results = awsParamStore.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.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](https://en.wikipedia.org/wiki/BSD_licenses)