実現したいこと
著名な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"
}
-
reverseの使い方については半信半疑です ↩