LoginSignup
24
27

More than 5 years have passed since last update.

AWSの特定OS最新AMIを追いかけるためのワンライナー

Last updated at Posted at 2015-06-16

実現したいこと

著名なOSの最新AMIのリソースIDなどを取得することが目的です。

能書き

このエントリーは "AWS CLI"で最新の"Amazon Linux AMI"(gp2)のIDを取得する を読んで触発されたものです。
AWS CLIで取得した情報を登録年月日にて逆順ソート 1 し、最初の1件のみを表示することで最新AMIを取得しようと試みています。

OS別

filterなどで定義している内容と取得結果は2015年6月17日現在のものとなります。気付いたらメンテナンスします。
以下の例において、リージョンは ap-northeast-1 にて実施しています。
筆者がHVM以外利用する気が無いため、以下の例でもHVM向けAMIのみを抽出しています。

Amazon Linux

RCを含む全て

aws ec2 describe-images --owner amazon --region ap-northeast-1 --filter "Name=name,Values=amzn-ami-hvm-*-gp2" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'
{
    "ImageId": "ami-cbf90ecb", 
    "YMD": "2015-03-18T16:30:35.000Z", 
    "Name": "amzn-ami-hvm-2015.03.0.x86_64-gp2"
}

RCを含まない

aws ec2 describe-images --owner amazon --region ap-northeast-1 --filter "Name=name,Values=amzn-ami-hvm-*-gp2" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[?!contains(Name,`rc`)].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'

Amazon Linux(NAT)

aws ec2 describe-images --owner amazon --region ap-northeast-1 --filter "Name=name,Values=amzn-ami-vpc-nat-*" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'
{
    "ImageId": "ami-03cf3903", 
    "YMD": "2015-03-20T20:45:27.000Z", 
    "Name": "amzn-ami-vpc-nat-hvm-2015.03.0.x86_64-gp2"
}

RHEL

aws ec2 describe-images --owner 309956199498 --region ap-northeast-1 --filter "Name=name,Values=RHEL-7.1*" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'
{
    "ImageId": "ami-b1b458b1", 
    "YMD": "2015-02-26T16:34:39.000Z", 
    "Name": "RHEL-7.1_HVM_GA-20150225-x86_64-1-Hourly2-GP2"
}

SuSE

aws ec2 describe-images --owner 013907871322 --region ap-northeast-1 --filter "Name=name,Values=suse-sles-12-*" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'
{
    "ImageId": "ami-f1fdcef0", 
    "YMD": "2014-10-23T22:34:13.000Z", 
    "Name": "suse-sles-12-byos-v20141023-hvm-ssd-x86_64"
}

Ubuntu

aws ec2 describe-images --owner 099720109477 --region ap-northeast-1 --filter "Name=name,Values=*/ubuntu-trusty-14*" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'
{
    "ImageId": "ami-aa7da3aa", 
    "YMD": "2015-06-09T17:11:36.000Z", 
    "Name": "ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-20150609"
}

CentOS7

aws ec2 describe-images --owners aws-marketplace --region ap-northeast-1 --filters "Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce" "Name=virtualization-type,Values=hvm" --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId},&YMD)|reverse(@)|[0]'
{
    "ImageId": "ami-eec1c380", 
    "YMD": "2016-02-26T21:22:50.000Z", 
    "Name": "CentOS Linux 7 x86_64 HVM EBS 1602-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-d7e1d2bd.3"
}

  1. reverseの使い方については半信半疑です 

24
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
27