2.0.2 • Published 4 years ago

aws-ssm-inject-params v2.0.2

Weekly downloads
13
License
MIT
Repository
github
Last release
4 years ago

aws-ssm-inject-params

Module allows to replace elements of object/structure with variables from AWS Parameter Store.

This module is commonly used with Config generation that will make you application deployment simpler as well as independent from deployment environment.

Install

npm install aws-ssm-inject-params --save

Usage

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

Putting Parameter Store data into data structure

Prepare object with placeholder starting with: aws-ssm:/

    const data = {
        apiUrl: 'aws-ssm://application/message',
        enabled: true,
    }

Using the module:

    const dataWithValue = awsSsm.getValuesFromSsm(data);
    console.log(dataWithValue);

should print you data structure as below:

    {
        apiUrl: 'Hello AWS-SSM World !',
        enabled: true
    }

Partial replacement

Prepare object with placeholder starting with: aws-ssm:/ and separating parameter store part with suffix by | e.g.

    const data = {
        apiUrl: 'aws-ssm://my-service/host|/user/details',
        enabled: true,
    }

presuming aws-ssm://my-service/host is defined and equals to:

http://superuser.org

result will be:

    const data = {
        apiUrl: 'http://superuser.org/user/details',
        enabled: true,
    }

JSON parsing

Prepare object with placeholder starting with: aws-ssm-json:/ e.g.

    const data = {
        apiUrl: 'aws-ssm-json://my-service/json-serialized-object',
        enabled: 'aws-ssm-json://my-service/json-boolean-enabled',
    }

presuming /my-service/json-serialized-objec is a valid JSON object:

'{"intValue": 123, "stringValue": "value", "list": [1,2,3,4,5]}'

and /my-service/json-boolean-enabled is just string of "true" or "false" it would be converted to boolean json.

"true"

If string is not a valid JSON string error is thrown:

Could not JSON parse /my-service/json-serialized-object => {"intValue": 123

Missing parameter throws error !

If given placeholder cannot be found in parameter store exception is thrown:

    const data = {
        apiUrl: 'aws-ssm://no/such/value',
        enabled: true,
    }

will throw below Error:

Path /no/such/value not found in parameter store!'

Prepare data in AWS with AWS CLI:

Adding new parameter:

aws ssm put-parameter --name '/application/message' --value 'Hello AWS-SSM World !'  --type 'String'

Reading new parameter:

aws ssm get-parameters --names "/application/message"
{
    "Parameters": [
        {
            "Name": "/application/message",
            "Type": "String",
            "Value": "Hello AWS-SSM World !"
        }
    ],
    "InvalidParameters": []
}

Troubleshooting

Missing region in config

Please export AWS Region

export AWS_REGION='eu-west-1'

or if your system already has AWS_DEFAULT_REGION

export AWS_REGION=$AWS_DEFAULT_REGION
2.0.2

4 years ago

2.0.1

4 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago