GUI なら「インスタンスを作成」ボタンをクリックすれば簡単に確認できますが、AWS CLI(コマンドライン)でクイックスタートに出てくる EC2 インスタンスの AMI を検索するコマンドを考えてみました。
AMI で利用できるインスタンスタイプのリストを取得しようとしたができなかった
当初は、コマンドラインで AMI 一覧を取得し、特定の AMI が利用できるインスタンスタイプの一覧を取得しようとしましたができませんでした。
stack overflow の以下の記事でも同じようなことしたいユーザーが質問を投げています。
AWS AMI : Get list of Available Instance Types for specific AMI
Is there an AWS API method(or fog method) using which I can retrieve the list of instance types that are enabled for an AMI? for example: I want to get a list of available instance types for AMI ID “ami-716e6534”. It should give me list of available types (t1.micro, m1.small,m1.medium…) out of all available types.
しかし回答はない状況です。
そもそもなぜこんなことをしたいのかというと、以下の理由のためです。
- インスタンスタイプは日々増え続けている
- その一方、古いインスタンスタイプは廃止されていく
- 1つの AMI はすべてのインスタンスタイプで利用できるわけではない(例えば、Windows Server with SQL Server はある程度スペックの高いインスタンスタイプしか選択できないなど)
いろいろ調べていたら、EC2 インスタンスを作成する際に利用する「クイックスタート」に表示される AMI に関しては、ほぼほぼすべてのインスタンスタイプが利用できそうなことがわかりました。
そこでクイックスタートに表示される AMI の一覧をコマンドで取得する方法を調べました。
クイックスタートに表示される AMI をコマンドで取得する
クイックスタートに表示される AMI の一覧をコマンドで取得するのはできませんが、クイックスタートに表示される AMI をコマンドで取得することができます。
Finding a Quick Start AMI
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#finding-quick-start-ami
Amazon EC2 インスタンスを作成する際に「Amazonマシンイメージ(AMI)の選択)ページの「クイックスタート」に一般的な AMI のリストが表示されます。
これらのクイックスタート の AMI を以下のように検索します。
■Amazon Linux 2 AMI を検索
[root@DESKTOP ~]# aws ec2 describe-images –owners amazon –filters ‘Name=name,Values=amzn2-ami-hvm-2.0.????????.?-x86_64-gp2’ ‘Name=state,Values=available’ –query ‘reverse(sort_by(Images, &CreationDate))[:1].ImageId’ –output text |
■Amazon Linux AMI を検索
[root@DESKTOP ~]# aws ec2 describe-images –owners amazon –filters ‘Name=name,Values=amzn-ami-hvm-????.??.?.????????-x86_64-gp2’ ‘Name=state,Values=available’ –query ‘reverse(sort_by(Images, &CreationDate))[:1].ImageId’ –output text |
■Ubuntu Server 16.04 LTS AMI を検索
[root@DESKTOP ~]# aws ec2 describe-images –owners 099720109477 –filters ‘Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-????????’ ‘Name=state,Values=available’ –query ‘reverse(sort_by(Images, &CreationDate))[:1].ImageId’ –output text |
■Red Hat Enterprise Linux 7.5 AMI を検索
[root@DESKTOP ~]# aws ec2 describe-images –owners 309956199498 –filters ‘Name=name,Values=RHEL-7.5_HVM_GA*’ ‘Name=state,Values=available’ –query ‘reverse(sort_by(Images, &CreationDate))[:1].ImageId’ –output text |
■Red Hat Enterprise Linux 8.0 AMI を検索
[root@DESKTOP ~]# aws ec2 describe-images –owners 309956199498 –filters ‘Name=name,Values=RHEL-8.0.0_HVM-*’ ‘Name=state,Values=available’ –query ‘reverse(sort_by(Images, &CreationDate))[:1].ImageId’ –output text |
■SUSE Linux Enterprise Server 15 AMI を検索
[root@DESKTOP ~]# aws ec2 describe-images –owners amazon –filters ‘Name=name,Values=suse-sles-15-v????????-hvm-ssd-x86_64’ ‘Name=state,Values=available’ –query ‘reverse(sort_by(Images, &CreationDate))[:1].ImageId’ –output text |
コメント