Last active
April 5, 2019 17:40
-
-
Save limed/ba8e0c77d17dcc13229af18760a8f0f8 to your computer and use it in GitHub Desktop.
Deregisters AMI, deletes snapshots and volumes based on years
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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