Instantly share code, notes, and snippets.

Embed
What would you like to do?
Find the most recent Ubuntu AMI using aws-cli (or any other AMI for that matter)
#!/bin/sh
# Use AWS CLI to get the most recent version of an AMI that
# matches certain criteria. Has obvious uses. Made possible via
# --query, --output text, and the fact that RFC3339 datetime
# fields are easily sortable.
export AWS_DEFAULT_REGION=us-east-1
aws ec2 describe-images \
--filters Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64* \
--query 'Images[*].[ImageId,CreationDate]' --output text \
| sort -k2 -r \
| head -n1
@jamesonwilliams

This comment has been minimized.

jamesonwilliams commented Mar 19, 2017

Nice!

@arpat

This comment has been minimized.

arpat commented Sep 28, 2017

Thanks!

@visokoo

This comment has been minimized.

visokoo commented Oct 2, 2017

You're awesome, thank you!

@blckct

This comment has been minimized.

blckct commented Mar 28, 2018

Piping it to cut -f 1 will give only the ami name :)

@michaelajr

This comment has been minimized.

michaelajr commented Apr 27, 2018

Might want to limit that to the Ubuntu Cloud account. Can also use sort_by in the query to get the most recent.

aws ec2 describe-images \
    --owners 099720109477 \
    --filters Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-* \
    --query 'sort_by(Images,&CreationDate)[-1].ImageId'
@ccsalway

This comment has been minimized.

ccsalway commented Apr 28, 2018

@michaelajr perfect, thanks.

@aggy07

This comment has been minimized.

aggy07 commented Jul 11, 2018

Is there any way we can get the Latest AMI for all the regions instead of a specific one?

@sunfriendli

This comment has been minimized.

sunfriendli commented Jul 26, 2018

Is there a much more canonical filter to use,instead of "Name=name"?In case someone create a ami with similar name.

@phozzy

This comment has been minimized.

phozzy commented Aug 24, 2018

Is it possible to integrate that into cloudformation template?

@xgames330

This comment has been minimized.

xgames330 commented Oct 24, 2018

Good Find!

Revised to capture all Ubuntu Images:
aws ec2 describe-images --filters "Name=name,Values=ubuntu*" --query "sort_by(Images, &CreationDate)[].Name"

@aggy07 Run command against region that you want, and it will give you the corresponding AMI for that region. Commands must be run against a specific region, no way to list all AMI's in all regions at once.

@vgallissot

This comment has been minimized.

vgallissot commented Nov 12, 2018

This is good, thanks!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment