Skip to content

Instantly share code, notes, and snippets.

@PeteGoo
Last active February 13, 2023 10:51
Show Gist options
  • Select an option

  • Save PeteGoo/ba6374f355327e7f52ddaa500c8e5a31 to your computer and use it in GitHub Desktop.

Select an option

Save PeteGoo/ba6374f355327e7f52ddaa500c8e5a31 to your computer and use it in GitHub Desktop.
Helpful SSM Parameter Store scripts
#!/bin/bash
# To use just set a variable with SSM_<target_env_var>=<ssm_parameter_store_path>
# e.g. SSM_database_password=prod/myservice/database-password
function get_parameter {
SSM_ENV_VAR_NAME=$1
ENV_VAR_NAME=`echo "$SSM_ENV_VAR_NAME" | cut -c5-`
SSM_PARAM_NAME="${!SSM_ENV_VAR_NAME}"
echo "Getting parameter $SSM_PARAM_NAME from SSM parameter store if it exists and setting into the variable $ENV_VAR_NAME"
SSM_VALUE=`aws ssm get-parameters --with-decryption --names "${SSM_PARAM_NAME}" --query 'Parameters[*].Value' --output text`
#echo "SSM_VALUE = $SSM_VALUE"
COMMAND="export $ENV_VAR_NAME=$SSM_VALUE"
#echo $COMMAND
eval ${COMMAND}
#echo "$ENV_VAR_NAME = ${!ENV_VAR_NAME}"
}
while read name ; do
get_parameter $name
done <<EOT
$(printenv | grep -o '^SSM_[^=]*')
EOT
exec "$@"
@jedis00

jedis00 commented Jan 29, 2020

Copy link
Copy Markdown

Do you have a variation where it takes a large array of param names and can query 10 at a time (API limit)?

@PeteGoo

PeteGoo commented Jan 29, 2020

Copy link
Copy Markdown
Author

We switched most of this to get-parameters-by-path [docs] to avoid these kinds of problems.

@imanebosch

Copy link
Copy Markdown

Not getting this to work. Can you provide an example of usage?

@PeteGoo

PeteGoo commented Nov 11, 2021

Copy link
Copy Markdown
Author

TBH it's been a while since we used this. I would recommend checking out Chamber, we tend to use it mostly these days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment