CentOS7の最新AMI IDの取得方法考えてみた
こんにちは、臼田です。
皆さん、CloudFormationテンプレート書いてますか?(挨拶)
CloudFormationを使ってEC2を立てていると、アレをうまく取得したくなります。AMI IDです。
そんなときに利用する新しい手法としてパラメータストアから取得する方法が取れるようになっています。
最新のECS-optimized AMI IDをParameter Storeから取得できるようになりました(Amazon Linuxもあるよ)
すでにWindowsやAmazonLinuxも取得できるようになっているのですから、CentOSだって取得したいですよね?少なくとも僕はそう思いました。
パラメータストアからCentOSのAMI ID取得を試みる
パラメータストアからAMI IDを取得する方法の細かい内容は上記2つの記事を見ていただくのが手っ取り早いです。
それぞれ下記のようなパスを指定しています。
- /aws/service/ami-windows-latest
- /aws/service/ami-amazon-linux-latest
厳密には上記配下の詳細なエイリアスを指定しますが、上記のパスでクエリをかけるとエイリアスの一覧が出てくるので、そこから適切なものを選ぶだけです。
残念ながら僕がググって見た限りでは上記以外のパブリックパラメータストアの値を見つけることはできませんでした。
でも見てください、パスの命名規則はすっごいわかりやすい!こんなん楽勝やろ!
$ aws ssm get-parameters-by-path --path "/aws/service/ami-centos-latest" An error occurred (AccessDeniedException) when calling the GetParametersByPath operation: No access to "/aws/service" unless public parameter, aws/service/ami-centos-latest is not a valid namespace.
………うそやろ
明らかに/aws/service/ami-centos-latest
で行けそうな雰囲気でしたが、全然だめでしたorz
ちなみにcentos7とかバージョン入れてみたり、ubuntuとか他のOSも試してみましたが全滅でした
ならこれならどうや!
$ aws ssm get-parameters-by-path --path "/aws/service" An error occurred (AccessDeniedException) when calling the GetParametersByPath operation: No access to "/aws/" namespace unless public or reference parameter, /aws/service is neither a public nor a reference parameter.
………完 全 敗 北
/aws/service
自体はアクセスできないようです、残念
というわけで、確認した限りではパラメータストアからの取得はできないようでした
AmazonLinuxやWindows以外のOSの対応も待たれます
でもCentOS7のAMI IDを取得する方法はあった!
というわけで諦めかけていたのですが、同僚の助けによりCentOS7のAMI IDを取得する方法を見つけました!
まずは利用するCentOS7のマーケットプレイスからSubscribeします。
Continueします。
バージョンやリージョンを合わせるとAMI IDが表示されます!
やったね!(GUIだけど)
本当はCLIなりAPI一発で取得して上手くCloudFormationと組み合わせて使いたいところですが、現状では上記手法で手動で取得したあと、パラメータとして入力するしか無いと思います、多分
補足: ベンダーの提供情報について
実はCentOSのAMI IDは昔からCentOSのwikiに乗っているのでこれを参照すればいいと思っていたのですが、実際に見てみると現状の最新版の情報がなくお手上げ状態でした。
なので、上記手法でAWSのプラットフォームから取得する方法が確実だと思います。
まとめ
パブリックパラメータストアはすごく良い機能ですので、他のOSや他にも欲しい値は多分いろいろあるので、展開に期待したいですね。
ついでにパブリックパラメータストアの一覧がまとまっているページが欲しい!
CentOSの最新AMI IDについてはとりあえずマーケットプレイスから取得しましょう。