Skip to content

Instantly share code, notes, and snippets.

@limed
Last active April 5, 2019 17:40
Show Gist options
  • Save limed/ba8e0c77d17dcc13229af18760a8f0f8 to your computer and use it in GitHub Desktop.
Save limed/ba8e0c77d17dcc13229af18760a8f0f8 to your computer and use it in GitHub Desktop.
Deregisters AMI, deletes snapshots and volumes based on years
#!/usr/bin/env python
import boto3
import os
try:
client = boto3.client('ec2')
except Execption as e:
print ("Unable to create ec2 client: {}".format(e))
os.exit(1)
def region_list():
regions = []
for region in client.describe_regions()['Regions']:
if region:
regions.append(region['RegionName'])
return regions
REGIONS = region_list()
def deregister_ami(filter_year):
filter_val = filter_year + "*"
print ("Deregistering ami from year: {}".format(filter_val))
for region in REGIONS:
ec2 = boto3.resource('ec2', region_name=region)
images = list(ec2.images.filter(Owners=['self'], Filters=[{'Name': 'creation-date', 'Values': [filter_val]}]).all())
for i in images:
if i.image_id:
print ("Deregistering ami: {} in Region: {}".format(i.image_id, region))
ec2.Image(i.image_id).deregister()
def delete_snapshots(filter_year):
filter_val = filter_year + "*"
account_id = boto3.client('sts').get_caller_identity().get('Account')
print ("Deleting snapshot from year: {}".format(filter_val))
for region in REGIONS:
ec2 = boto3.resource('ec2', region_name=region)
snapshots = list(ec2.snapshots.filter(OwnerIds=[account_id], Filters=[{'Name': 'start-time', 'Values': [filter_val]}]).all())
for i in snapshots:
if i.snapshot_id:
print("Deleting snapshot: {} in Region: {}".format(i.snapshot_id, region))
ec2.Snapshot(i.snapshot_id).delete()
def delete_volume(filter_year):
filter_val = filter_year + "*"
print ("Deleting volume from year: {}".format(filter_val))
for region in REGIONS:
ec2 = boto3.resource('ec2', region_name=region)
volumes = list(ec2.volumes.filter(Filters=[{'Name': 'create-time', 'Values': [filter_val]}]).all())
for i in volumes:
if i.volume_id:
print("Deleting volume: {} in region: {}".format(i.volume_id, region))
ec2.Volume(i.volume_id).delete()
if __name__ == "__main__":
for years in ['2015','2016','2017']:
deregister_ami(years)
delete_snapshots(years)
delete_volume(years)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment