Amazon EC2のdescribe-imagesでパブリックAMIに関連付けられたSSMパラメータ名を確認できるようになりました

Amazon EC2のdescribe-imagesでパブリックAMIに関連付けられたSSMパラメータ名を確認できるようになりました

Amazon EC2の describe-images APIレスポンスに、PublicSsmParameterName フィールドが追加されました。公開SSMパラメータが関連付けられたパブリックAMIでは、そのパラメータ名を直接確認できます。本記事では、AL2023とWindows Server 2022のAMIで新フィールドを確認し、CloudFormationからSSMパラメータが示す最新AMIを参照してEC2インスタンスを起動しました。
2026.07.17

はじめに

2026年7月16日のアップデートで、aws ec2 describe-images のレスポンスに新フィールド PublicSsmParameterName が追加されました。関連する公開SSMパラメータが存在するパブリックAMIでは、そのパラメータ名を直接確認できます。

https://aws.amazon.com/jp/about-aws/whats-new/2026/07/ec2-pulic-images-ssm-parameters/

これまでAMI IDからSSMパラメータ名を知るには、SSM Parameter Store側からパラメータ一覧を取得して突合する必要がありました。今回のアップデートにより、describe-images の結果にSSMパラメータ名が含まれるようになりました。

観点 従来フロー 新フロー
手順 パラメータ一覧を取得 → 目的のパラメータを特定 → 値を取得して照合 describe-images の結果から直接確認
主なコマンド ssm get-parameters-by-path ec2 describe-images
逆引き可否 AMI ID → SSMパラメータの逆引きには手作業での突合が必要 可能

本記事では、AL2023(x86_64 / arm64)と Windows Server 2022 の各AMIで PublicSsmParameterName が返ることを確認し、従来の ssm get-parameters-by-path による方法との違いを整理したうえで、CloudFormation でSSMパラメータ経由の最新AMI参照によりEC2インスタンスを起動するところまでを試しました。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami-parameter-store.html

検証内容

検証1: AL2023 のパブリックAMIで確認する

Amazon Linux 2023 の最新AMIに対して describe-images を実行し、新フィールドが返ることを確認します。x86_64 と arm64 の2パターンで確認しました。

aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=al2023-ami-2023.12.20260710.0-kernel-6.1-x86_64" \
  --query "Images[0]"
{
    "ImageId": "ami-09b226c0a2ed06329",
    "Name": "al2023-ami-2023.12.20260710.0-kernel-6.1-x86_64",
    "Architecture": "x86_64",
    "Description": "Amazon Linux 2023 AMI 2023.12.20260710.0 x86_64 HVM kernel-6.1",
    "PublicSsmParameterName": "aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64",
    "Public": true,
    "CreationDate": "2026-07-10T03:20:01.000Z"
}

検証したレスポンスでは PublicSsmParameterName は先頭スラッシュなしの形式(aws/service/...)で返りました。SSMパラメータとして参照する際は先頭に / を付けます。なお、検証3で示すとおり、この時点では kernel-defaultkernel-6.1 が同一のAMI IDを指しています。今回の検証では、これらのうち kernel-default のパラメータ名が返りました。

続いて arm64 です。

aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=al2023-ami-2023.12.20260710.0-kernel-6.1-arm64" \
  --query "Images[0]"
{
    "ImageId": "ami-05151a526896cf708",
    "Name": "al2023-ami-2023.12.20260710.0-kernel-6.1-arm64",
    "Architecture": "arm64",
    "Description": "Amazon Linux 2023 AMI 2023.12.20260710.0 arm64 HVM kernel-6.1",
    "PublicSsmParameterName": "aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64",
    "Public": true,
    "CreationDate": "2026-07-10T03:11:26.000Z"
}

arm64 でも PublicSsmParameterName が返り、アーキテクチャに応じたパラメータ名(末尾が arm64)になっていました。

検証2: Windows Server 2022 でも確認する

Windows Server 2022 のAMIでも PublicSsmParameterName が返るかを確認しました。

aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=Windows_Server-2022-English-Full-Base-2026.06.10" \
  --query "Images[0]"
{
    "ImageId": "ami-0a68c495d860adbec",
    "Name": "Windows_Server-2022-English-Full-Base-2026.06.10",
    "Architecture": "x86_64",
    "Description": "Microsoft Windows Server 2022 Full Locale English AMI provided by Amazon",
    "Platform": "windows",
    "PublicSsmParameterName": "aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base",
    "Public": true,
    "CreationDate": "2026-06-10T22:17:58.000Z"
}

Windows AMI でも PublicSsmParameterName が返りました。Amazon Linux の ami-amazon-linux-latest に対し、Windows は ami-windows-latest とパスの名前空間で区別されています。

検証3: 従来のSSMパラメータ一覧取得との対比

新フィールドが追加される前は、AMIに対応するSSMパラメータを知るために Parameter Store 側を列挙する必要がありました。ssm get-parameters-by-path/aws/service/ami-amazon-linux-latest 配下のパラメータ一覧を取得します。

aws ssm get-parameters-by-path \
  --path "/aws/service/ami-amazon-linux-latest" \
  --query "Parameters[].{Name:Name,Value:Value}"

このパス配下には、検証時点でAL1・AL2・AL2023を含む45個のパラメータが存在しました。このうちAL2023に関連するものを抜粋すると以下のとおりです。

[
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64", "Value": "ami-05151a526896cf708"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64", "Value": "ami-09b226c0a2ed06329"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64", "Value": "ami-05151a526896cf708"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64", "Value": "ami-09b226c0a2ed06329"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.12-arm64", "Value": "ami-00cabeadbeb4ea5b7"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.12-x86_64", "Value": "ami-081ad521c91aa3b34"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.18-arm64", "Value": "ami-08478da9da8cb5a5a"},
    {"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.18-x86_64", "Value": "ami-0967230e9fa45db6d"}
]

従来、手元にあるAMI ID(例: ami-09b226c0a2ed06329)が「どのSSMパラメータに対応するか」を知りたい場合、この一覧から値を検索して突合する必要がありました。新フィールドでは describe-images の結果に関連付けられたパラメータ名が含まれるため、Parameter Store側の一覧から探すことなく確認できます。

検証4: CloudFormation でSSMパラメータ経由のEC2起動

確認したSSMパラメータを CloudFormation から参照し、最新のAL2023 arm64 AMIでEC2インスタンスを起動しました。AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> 型のパラメータを使うと、スタック作成・更新時にSSMパラメータの値が解決されます。解決された値(AMI ID)が ImageId に渡されます。

AWSTemplateFormatVersion: '2010-09-09'
Description: EC2 instance using SSM Parameter for latest AL2023 AMI (arm64)

Parameters:
  LatestAmiId:
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64

Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t4g.nano
      ImageId: !Ref LatestAmiId
      Tags:
        - Key: Name
          Value: ssm-parameter-ami-test

このテンプレートをデプロイします。

aws cloudformation deploy \
  --template-file template.yaml \
  --stack-name ssm-parameter-ami-test

スタックが CREATE_COMPLETE になったので、インスタンスの情報を確認します。

aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=ssm-parameter-ami-test" \
  --query "Reservations[0].Instances[0].{InstanceId:InstanceId,ImageId:ImageId,InstanceType:InstanceType,State:State.Name,Architecture:Architecture}"
{
    "InstanceId": "i-xxxxxxxxxxxxxxxxx",
    "ImageId": "ami-05151a526896cf708",
    "InstanceType": "t4g.nano",
    "State": "running",
    "Architecture": "arm64"
}

ImageIdami-05151a526896cf708 で、SSMパラメータの値と一致しました。テンプレートにAMI IDを直書きしなくても、デプロイ時に最新の値が解決される構成です。

まとめ

describe-images のレスポンスに PublicSsmParameterName が追加され、パブリックAMIに関連付けられた公開SSMパラメータ名を直接確認できるようになりました。これにより、既存テンプレートにハードコードされたAMI IDを、SSMパラメータ参照へ置き換える際の確認がしやすくなります。

SSMパラメータを利用すると、IaCテンプレート内のAMI IDを書き換えることなく、スタックの作成・更新時に指定したAMI系列の最新AMIを参照できます。特に、古いAMIが公開されなくなるWindows AMIへの追従や、起動後に適用するセキュリティ更新・パッケージ更新を減らしたい場合に有効です。起動時に更新処理を実行している構成では、初期化時間の短縮も期待できます。

一方、CloudFormationでスタックを更新した際に、SSMパラメータが以前と異なるAMI IDへ解決されると AWS::EC2::InstanceImageId が変更されます。その結果インスタンスが置き換えられるため、非オートスケーリングでステートフルなEC2に対して設定変更を行う構成ではご注意ください。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事