AWS
ami

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

More than 1 year has passed since last update.


実現したいこと

著名な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の使い方については半信半疑です