38 lines
1.8 KiB
Bash
Executable File
38 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# set -x
|
|
|
|
TAG_FILTER="Name=tag:Name,Values=zdt-alpine-3.20*dev*" #-dev" #kubezero*"
|
|
#TAG_FILTER="Name=tag:Name,Values=zdt-alpine-*kubezero*1.28*"
|
|
|
|
echo "Are you really sure to delete AMIs matching \"$TAG_FILTER\" ?"
|
|
read
|
|
|
|
#for r in $(aws ec2 describe-regions --query "Regions[].{Name:RegionName}" --output text); do
|
|
for r in eu-central-1 us-west-2 ap-southeast-2 ca-central-1 us-east-1 us-west-1; do
|
|
amis=$(aws ec2 describe-images --region $r --owners self --output json --filters $TAG_FILTER | jq -r '.Images[].ImageId')
|
|
for a in $amis; do
|
|
aws ec2 deregister-image --region $r --image-id $a && echo "Deleted AMI $a in $r"
|
|
done
|
|
|
|
# failed AMIs
|
|
amis=$(aws ec2 describe-images --region $r --owners self --output json --filters Name=state,Values=failed | jq -r '.Images[].ImageId')
|
|
for a in $amis; do
|
|
aws ec2 deregister-image --region $r --image-id $a && echo "Deleted AMI $a in $r"
|
|
done
|
|
amis=$(aws ec2 describe-images --region $r --owners self --output json --query 'Images[? ! not_null(Tags)].{ID:ImageId,Name:Tags[?Key==`Name`]|[0].Value}' | jq -r '.[].ID')
|
|
for a in $amis; do
|
|
aws ec2 deregister-image --region $r --image-id $a && echo "Deleted AMI $a in $r"
|
|
done
|
|
|
|
snapshots=$(aws ec2 describe-snapshots --region $r --owner-ids self --output json --filters $TAG_FILTER | jq -r '.Snapshots[].SnapshotId')
|
|
for s in $snapshots; do
|
|
aws ec2 delete-snapshot --snapshot-id $s --region $r && echo "Deleted snapshot $s in $r"
|
|
done
|
|
|
|
# delete orphaned snapshots
|
|
snapshots=$(aws ec2 describe-snapshots --region $r --owner-ids self --output json --query 'Snapshots[? ! not_null(Tags)].{ID:SnapshotId,Time:StartTime,Name:Tags[?Key==`Name`]|[0].Value}' | jq -r '.[].ID')
|
|
for s in $snapshots; do
|
|
aws ec2 delete-snapshot --snapshot-id $s --region $r && echo "Deleted snapshot $s in $r"
|
|
done
|
|
done
|