本記事ではEC2でRed Hat Enterprise Linux(RHEL)を用いたい場合のAMIの調べ方について、2019/6/18時点で「こうやったら良さそうという方法・留意点」についてご案内します。
8系が最近リリースされて、EC2の作成ウィザードのクイックスタートで表示されるRHELについても8系が表示されるようになりましたが、まだもうちょっと7系を利用したい・あれ過去verのAMIってどう調べたらいいんだろうと思っている方も多いはず。この記事はそんなあなたのための記事です。
なお、Cent OSのAMIの調べ方につきましては弊社の城が過去に記事を書いておりますので併せてご参照ください。
RHELの公式AMI一覧
AWSの公式ページにRHELの利用案内はあるのですが、こちらのページの[今すぐ購入する]から遷移するマーケットプレイスでは2019年6月18日時点では8系や7.6系等の最近のAMIは管理されていない・利用できないことに注意が必要です。
一方で、Redhat側でもAWSでのAMIの調べ方について記している記事があります。AMIを網羅的に調べるにあたっては同記事の方法を参照するのがよさそうです。
例えば、東京リージョンで7系のAMIを調べたい場合のコマンドの例は以下になります。
aws ec2 describe-images —owners 309956199498 —query 'Images[*].[CreationDate,Name,ImageId]' —filters "Name=name,Values=RHEL-7.?*GA*" —region ap-northeast-1 —output table | sort -r
| 2019-02-06T00:23:09.000Z | RHEL-7.6_HVM_GA-20190128-x86_64-0-Hourly2-GP2 | ami-00b95502a4d51a07e |
| 2018-10-17T14:14:10.000Z | RHEL-7.6_HVM_GA-20181017-x86_64-0-Hourly2-GP2 | ami-08419d23bf91152e4 |
| 2018-03-23T21:14:36.000Z | RHEL-7.5_HVM_GA-20180322-x86_64-1-Hourly2-GP2 | ami-6b0d5f0d |
| 2017-08-08T15:45:51.000Z | RHEL-7.4_HVM_GA-20170808-x86_64-2-Hourly2-GP2 | ami-30ef0556 |
| 2017-07-24T15:55:34.000Z | RHEL-7.4_HVM_GA-20170724-x86_64-1-Hourly2-GP2 | ami-3901e15f |
| 2016-10-26T22:33:03.000Z | RHEL-7.3_HVM_GA-20161026-x86_64-1-Hourly2-GP2 | ami-5de0433c |
| 2015-11-12T21:11:15.000Z | RHEL-7.2_HVM_GA-20151112-x86_64-1-Hourly2-GP2 | ami-0dd8f963 |
| 2015-02-26T16:34:39.000Z | RHEL-7.1_HVM_GA-20150225-x86_64-1-Hourly2-GP2 | ami-b1b458b1 |
| 2015-02-16T16:17:50.000Z | RHEL-7.0_HVM_GA-20150209-x86_64-1-Hourly2-GP2 | ami-e532d3e5 |
| 2014-10-20T14:13:11.000Z | RHEL-7.0_HVM_GA-20141017-x86_64-1-Hourly2-GP2 | ami-35556534 |
| 2014-05-28T20:36:35.000Z | RHEL-7.0_GA_HVM-x86_64-3-Hourly2 | ami-87206d86 |
| DescribeImages |
————————————————————————————————————————————————————
+—————————————+————————————————————————+————————————+
+—————————————+————————————————————————+————————————+
冒頭で紹介したブログ中にあるCentOSのAMIを調べる際のコマンド結果とは違い、こちらは7.6なのか7.5なのかOS内で_etc_redhat-releaseを確認するまでもなくマイナーリリースのVerがわかるのがよいですね。
なお、マーケットプレイスで提供されているAMIは、上記のコマンドで検索できるAMIに含まれており両者に違いはありません(ex.東京リージョンで7.1のAMIをSubscribeしてEC2を展開しようとした場合、利用されるAMIは上記でリストアップされている7.1のAMI=ami-b1b458b1です)。
ちなみに—filtersオプションの正規表現をいじれば6系も8系も表示可能です(2019年6月18日現在は8系ではGAという名称がついたAMIはないようなので、フィルタ条件からGAという文言を除いてコマンドを打つとよいです)。
製品コード・請求コードについて
マーケットプレイスで提供のAMIの多くについては ProductCodesがあります。ただ、Amazon Linux等ごく一部のAMIについてはProductCodesがないものがあります。RHEL AMIもその一種となります。
Redhatの場合は、別種の請求コードを有しておりその内容は以下で確認することができます(ami-b1b458b1から作成したインスタンスでの確認結果)。billingProductsの配列中に格納する値が請求コードに該当します。
$ curl -s 'http://instance-data/latest/dynamic/instance-identity/document/' |grep -i product
"devpayProductCodes" : null,
"marketplaceProductCodes" : null,
"billingProducts" : [ "bp-6fa54006" ],
公式ドキュメント にも記載があります通り、RHELに関してはEBSスナップショットからAMIを作成してしまいますと、上記の請求コード情報が保持されなくなります。結果、RHUIに正常に接続できない等の弊害が生じることに注意です。
AMIをEBSスナップショットからではなくEC2インスタンス自体から取得するようにしていれば上記のような自体は生じ得ませんが、万一AMIから復旧したRHELにてyumが使えない等の事象が発生した場合のトラブルシューティング・確認事項として上記は覚えておくといいでしょう。
最後に
自身の備忘録も兼ねたごくごく簡易な記事ですが、城のCent OSのAMI確認ブログ共々、どなたかの役に立てば嬉しく思います。