Recursively delete values from AWS Parameter Store
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.