Skip to content

Instantly share code, notes, and snippets.

@guyc
Created April 23, 2019 05:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guyc/2bad485aedb628a2f381faf9768e1fe5 to your computer and use it in GitHub Desktop.
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.
#!./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