This is a simple tool to inject AWS SSM Parameters into text.
If text contains pattern like this ${ssm:/my/path/to/param}
,
it will be injected with the value of the parameter /my/path/to/param
.
This can for example be used in a Deployment script when we want to fetch and inject variables from the Parameter Store into an ECS Task definition.
It can generally be used for putting any paramter into a string. just keep in mind that the parameter will be contained in your string in plain text afterwards so make sure the string is only used in secure places.
You can use the tool on the command line or in a node script. For all the examples, make sure yo have AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY_ID and AWS_REGION(AWS_DEFAULT_REGION) configured in one of the ways described here for AWS CLI or here for the node AWS-SDK. Note: Make sure to escape dollow signs properly if using doubly quoted shell strings or ES6 template strings ($ -> \$)
Assume your parameter on AWS SSM look like this:
/my/path/to/param1=Hello
/my/path/to/param2=World
# Make sure to escape the dollar sign in the string in shell script
MY_TEXT="
Value=\${ssm:/my/path/to/param1}
OtherValue=\${ssm:/my/path/to/param2}
"
npx -p @valiton/aws-param-inject aws-param-inject "$MY_TEXT"
# Outputs:
#
# Value=Hello
# OtherValue=World
For everyone with NPM version lower than 5.7
Since npx
will not be available install the package globally first
npm i -g @valiton/aws-param-inject
# then run it
aws-param-inject "..."
const injectSsmParams = require('@valiton/aws-param-inject');
// Make sure to escape the dollar sign in the template string
const input = `
Value=\${ssm:/my/path/to/param1}
OtherValue=\${ssm:/my/path/to/param2}
`
injectSsmParams(input)
.then(inputWithInjectedParameters => ...)
Node 8+
Inspired by the awesome serverless framework. Made by Valiton.