Skip to content

Instantly share code, notes, and snippets.

@bendrucker
Last active August 12, 2022 00:08
Show Gist options
  • Save bendrucker/65f340e299ace46a012be2ce97af795f to your computer and use it in GitHub Desktop.
Save bendrucker/65f340e299ace46a012be2ce97af795f to your computer and use it in GitHub Desktop.
Batch update all CloudFront distributions using a specified certificate ID to a new one
old_certificate="A..."
new_certificate="A..."
distributions=($(aws cloudfront list-distributions | jq --arg certificate $old_certificate -r '.DistributionList.Items[] | select(.ViewerCertificate.IAMCertificateId == $certificate) | .Id'))
echo "Distributions"
echo "============="
printf "%s\n" "${distributions[@]}"
echo "\n"
echo "Results"
echo "======="
for i in "${distributions[@]}"
do
previous=$(aws cloudfront get-distribution-config --id $i)
update=$(echo "$previous" | sed "s/$old_certificate/$new_certificate/" | jq '.DistributionConfig')
result=$(aws cloudfront update-distribution --id $i --distribution-config "$update" --if-match $(echo "$previous" | jq -r '.ETag'))
echo "$(echo $result | jq -r '.Distribution.Id + ": " + .Distribution.Status')"
done
@hpierre74
Copy link

This helped me a lot, thanks !

@mariouzae
Copy link

This helped me a lot, thanks!

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