Created
November 13, 2019 19:39
-
-
Save limed/ffde286baaafd080cbb4f5a65e77879c to your computer and use it in GitHub Desktop.
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() | |
ec2.Snapshot(i.snapshot_id) | |
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