Created
April 23, 2019 05:58
-
-
Save guyc/2bad485aedb628a2f381faf9768e1fe5 to your computer and use it in GitHub Desktop.
Find the latest available ami owned by me with a specific Name tag.
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
#!./env/bin/python | |
import boto3 | |
import sys | |
def format_filter(fils=None, tags=None): | |
f = [] | |
if fils is not None: | |
for k, v in fils.items(): | |
f.append({'Name': k, 'Values': [v]}) | |
if tags is not None: | |
for k, v in tags.items(): | |
f.append({'Name': f'tag:{k}', 'Values': [v]}) | |
return f | |
def find(fils=None, tags=None, owners=None): | |
f = format_filter(fils, tags) | |
ec2 = boto3.client('ec2') | |
response = ec2.describe_images(Filters=f, Owners=owners) | |
return response['Images'] | |
def find_latest(name, owner=None): | |
""" find the latest available ami with the given name and owner """ | |
owners = [owner] if owner is not None else None | |
images = find(fils={'state': 'available'}, tags={'Name': name}, owners=owners) | |
images.sort(key=lambda i: i['CreationDate'], reverse=True) | |
return images[0] | |
if __name__ == "__main__": | |
latest = find_latest(sys.argv[1], 'self') | |
if latest: | |
print(latest['ImageId']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment