Skip to content

kmokrzycki/aws-ssm-inject-params

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

import awsSsm from 'aws-ssm-inject-params';

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published