🐹

aws 推奨の最適化amiの探し方

2024/04/25に公開

はじめに

aws-cliでaws推奨の各種amiを探す方法を記載してます。

amazonlinux 2023 ecs最適化amiの取得

早速いきましょう。
amazonlinux 2023 ecs最適化amiのimage-idの確認コマンドです。

aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id --region ap-northeast-1
出力サンプル
{
    "Parameters": [
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id",
            "Type": "String",
            "Value": "ami-xxxxxxxxxxxxx",
            "Version": 32,
            "LastModifiedDate": 1712848268.79,
            "ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id",
            "DataType": "text"
        }
    ],
    "InvalidParameters": []
}

ぼやき

最近現場で、ec2のamiをamazonlinux 2023ベースのものに切り替えよう、という対応をしており、そこで初めてaws ssm get-parameters でその時の推奨amiの情報を取得できる事を知り「えっ??パラメータストアで?」って個人的には思いました。

このaws-cliでパラメータストアから取得するってのが、ECS関連のドキュメントページのやや階層深めのとこにちょろっと書いてあって「いやこれ結構使わない?」もっと目立たせていいんじゃない?と個人的には思って、じゃあ今後の自分のためにも書いておこうと思ったわけですね。。

このぺーじね。
Amazon ECS に最適化された AMI メタデータを取得する

ちなみにここを見ると、ECS GPU最適化ってやつの2023は無いんだね。
Neuronてのが代わりになってのかな。。まぁいいや

あと、EKS最適化のal2023の情報取得はこんな感じです。
こちらのページにコマンドがのってました。
Amazon EKS 最適化 Amazon Linux AMI ID の取得

aws ssm get-parameters --names /aws/service/eks/optimized-ami/1.29/amazon-linux-2023/x86_64/standard/recommended/image_id --region ap-northeast-1

amazonlinux 2023 xx最適化じゃないやつの取得

aws強者なクラスメソッド様もこういった記事を出してますね。
Amazon Linux 2023 の 最新 AMI ID は Parameter Store から取得しよう!

公式だとこのあたりでしょうかね
AMI パブリックパラメータを呼び出す

最初に書いたのはamazonlinux2023 ecs最適化amiだったので、次は今のリンクにもあったamazonlinux 2023 の**最適化じゃないやつの確認について記載しようと思います。

まず、amazonlinux 2023のamiにもどんな種類があるんだろうと。
その確認ならこれ↓

aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest/ --region ap-northeast-1 --query 'Parameters[?contains(Name, `al2023`)].Name'
出力サンプル
[
    "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-6.1-arm64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-6.1-x86_64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-default-arm64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-default-x86_64",
    "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64"
]

なんか思ったより色々あるんですね。minimalとかdefaultとか。。(この辺の詳細は今回追いません。)
コマンドが get-parameters-by-path --pathとなってたり、--queryなどとなってますが、ちょっと今回の記事ではその辺の内容は割愛させていただきます。

それでクラスメソッドさんも書いてますが、おそらくよく使われるのはこの辺りでしょうか。

"/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64"
"/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64"

じゃあ確認!x86_64のamazonlinux 2023 latestのimage-idゲット!

aws ssm get-parameters --names /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 --region ap-northeast-1
出力サンプル
{
    "Parameters": [
        {
            "Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64",
            "Type": "String",
            "Value": "ami-xxxxxxxxxxxx",
            "Version": 84,
            "LastModifiedDate": "2024-08-07T06:45:28.787000+09:00",
            "ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64",
            "DataType": "text"
        }
    ],
    "InvalidParameters": []
}

といった具合です。

さいごに

まぁ確認方法はもちろんコンソールのパブリックイメージの一覧から探すでも良いわけです。
(さんざんaws-cliの話してきたのに今更感はありますが。。)
ただ今もコンソールで"al2023"というワードでフィルターかけましたが、なんだかもっといっぱい情報が出てきて何が何だか感があるわけです。
それよりこちらの公式ドキュメントに沿ったコマンドで取得の方が、必要なものを取り出せてる感があって好きなわけですね。

まぁaws-cliなり何らかの方法で、ssm get-parametersssm get-parameters-by-path を上手に使いこなしながら欲しい情報を探し出しましょう、ということでした。

Discussion