Recently, I wanted to delete some of my configuration groups from the AWS Parameter Store. I use the hierarchical concept of the Parameter Store and thus wanted to recursively delete all options under a specific prefix.

It seems neither the AWS command line interface nor the AWS web console have this capability at the moment. But with a bit of shell scripting it is quite simple, so here’s again a little AWS shell helper. The tricky part is that the Parameter Store API only allows you to specify a maximum of 10 items to delete per call.

Use at your own caution. I’m not responsible if your Parameter Store is empty after executing this script.

#!/usr/bin/env bash

region=$1 path=$2

if [[ -z "$region" ]]; then echo "Please specify a region." exit 1 fi if [[ -z "$path" ]]; then
echo "Please specify a non empty path."
exit 1
fi

while true; do
parameters_to_delete=$(aws --region$region ssm get-parameters-by-path --recursive --path $path --query Parameters[].Name | jq -r '.[0:10]|join(" ")') if [[ -z "$parameters_to_delete" ]]; then
break
fi

echo "Deleting the following parameters: $parameters_to_delete" aws --region$region ssm delete-parameters --names \$parameters_to_delete
done


Instead of subslicing with jq it would also have been possible to just iterate all parameters and delete one-by-one, but this way I learnt something new.

It’s also interesting that the deletion in Parameter Store seems to be only eventually consistent, as my script tries to delete the same parameters a few times (i.e. even though I already deleted them, they are still returned on a query).

I do not maintain a comments section. If you have any questions or comments regarding my posts, please do not hesitate to send me an e-mail to blog@stefan-koch.name.