[アップデート] Amazon Machine Image (AMI) のプロパティから元 AMI の情報が確認出来るようになりました
いわさです。
先月、Amazon Machine Image(AMI) から作成元の AMI 情報を取得出来るようになるアップデートがありました。
別件で AMI の作成やリージョン間コピーを行う検証を行っており、ついでにこちらのアップデート内容も確認してみたのでどういう情報が取得出来るのか紹介します。
ソース AMI ID とリージョンが取得出来る
マネジメントコンソールでは、AMI のプロパティ上に次の情報が新たに追加されています。
取得出来るのは元になった AMI の AMI ID とリージョンが取得出来るみたいです。
東京リージョンでこの AMI を検索してみます。
こちらが私のプライベート AMI の元になった AMI の Amazon 公式 Amazon Linux 2 + .NET 6 ですね。
さらに、この公式イメージの元になった AMI 情報も確認することが出来ますね。
ただし、こちらの AMI を更に調べてみても該当するパブリックイメージを見つけることが出来ませんでした。おそらく廃止あるいは無効化されているのだろうと思います。
廃止されていてソース AMI を探せない場合もあるのですが、ソース AMI 情報が取得出来ない場合もありました。
マケプレあるいは自分のプライベートイメージでは確認出来ませんでしたが、Amazon 公式イメージの中のバニラっぽいイメージは次のように「-」で表示されていました。
また、一部の古い AMI では、ソース AMI の ID とリージョンが利用できない場合があるとのことです。
プライベート AMI を派生させてみる
どうやらこのソース AMI 情報はその AMI の直接の派生元となった AMI 情報のみ確認出来るようです。
そのため複数の派生段階を経て作成された AMI の場合も直近の派生元が確認出来ます。ためしに先ほど作成した AMI から EC2 を作成し、そこから AMI を作成してみます。
すると、ソース AMI 情報は直近の派生元になりました。なるほど。
さらに上までたどるには、ソース AMI 情報を元に再帰的に検索していく形になりそうです。git のツリーみたいな感じで辿れるようになると面白そうだなと思いました。ニーズは不明だが。
無効した AMI もソースとして表示される
先ほど辿れない AMI が存在していましたが、プライベートイメージで試したところソース AMI が無効化されていてもソース AMI ID などの情報としては引き続き表示されることが確認出来ています。
自分のイメージでソースイメージを探しても見つけることが出来ない場合は「無効化されたイメージ」一覧から探してみましょう。
「AMI のコピー」機能でもソース AMI 情報は引き継がれる
先ほどは EC2 から AMI を作成しましたが、AMI から AMI をコピーした場合もソース AMI は「コピー元 AMI」となります。
試してみましょう。プライベートイメージを東京リージョンから大阪リージョンにコピーしてみます。
大阪リージョンに作成されたプライベートイメージを確認してみると、ソース AMI ID は東京リージョンのプライベートイメージを指していました。
コピーした場合、コピー元に設定されているソース AMI 情報は引き継がれずにコピー元がソース AMI となるので認識しておきましょう。
なお、次の API を使って AMI が作成された場合のみソース AMI 情報は表示されるようです。
CreateImage
CopyImage
CreateRestoreImageTask
describe-images で取得する
再帰的に検索することで、コピーが繰り返されている場合でも大元のソース AMI をある程度特定出来そうですが、マネジメントコンソールから行うのはちょっとつらそうです。
AWS CLI のdescribe-images
でソース AMI が取得出来たので、このあたりを利用してやるのが良さそうですね。
% aws ec2 describe-images --region ap-northeast-3 --image-ids ami-07f92ca68351c5224 --profile hogeadmin
{
"Images": [
{
"PlatformDetails": "Linux/UNIX",
"UsageOperation": "RunInstances",
"BlockDeviceMappings": [
{
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap-055509cdb2df5967b",
"VolumeSize": 8,
"VolumeType": "gp2",
"Encrypted": false
},
"DeviceName": "/dev/xvda"
}
],
"Description": "[Copied ami-0430739419d4e73ad from ap-northeast-1] hoge-dotnet6-al2-ami2",
"EnaSupport": true,
"Hypervisor": "xen",
"Name": "hoge-dotnet6-al2-ami3",
"RootDeviceName": "/dev/xvda",
"RootDeviceType": "ebs",
"SriovNetSupport": "simple",
"VirtualizationType": "hvm",
"DeregistrationProtection": "disabled",
"SourceImageId": "ami-0430739419d4e73ad",
"SourceImageRegion": "ap-northeast-1",
"ImageId": "ami-07f92ca68351c5224",
"ImageLocation": "123456789012/hoge-dotnet6-al2-ami3",
"State": "available",
"OwnerId": "123456789012",
"CreationDate": "2024-11-30T20:12:25.000Z",
"Public": false,
"Architecture": "x86_64",
"ImageType": "machine"
}
]
}
SourceImageId
とSourceImageRegion
で確認可能です。
上記プロパティが取得出来ない場合は AWS CLI が古い可能性があるのでバージョンアップして試してみてください。
さいごに
本日は Amazon Machine Image (AMI) のプロパティから元 AMI の情報が確認出来るようになったので、別件の AMI 周り検証がてら確認してみました。
私自信はあまり調べたいケースなかったのだけど、トレースしたいという要望は何度か聞いたことがあったので今後活かせそうだなと思いました。