[アップデート] Amazon EC2 「許可された AMI」のイメージ基準へ設定できる条件が追加されました
いわさです。
Amazon EC2 の設定の中に「許可された AMI」という機能があります。
AWS re:Invent 2024 で登場した機能で、管理者が設定する AMI のポリシーのみ AWS ユーザーが利用できるというものです。
従来この許可された AMI では、許可する AMI の AWS アカウントあるいは所有者のエイリアスを指定することで制御出来ていましたが、先日のアップデートで追加の条件がいくつか設定され、より細かい制御ができるようになりました。
従来設定できたもの
従来は次のようにImageProvidersとして AWS アカウント ID や、あるいはamazon、aws-marketplaceなどのエイリアスを指定することのみが出来ました。

今回追加されたもの
今回新たに以下の 4 つの条件を設定できるようになりました。
- MarketplaceProductCodes
- ImageNames
- CreationDateCondition
- DeprecationTimeCondition
それぞれ使ってみたので紹介します。
MarketplaceProductCodes
MarketplaceProductCodesは AWS Marketplace の製品コードです。
公開された AMI のプロパティをよく見てみると、実は Marketplace 製品コードが紐づいています。
% aws ec2 describe-images --owners aws-marketplace --profile hoge
{
"Images": [
{
"PlatformDetails": "Linux/UNIX",
"UsageOperation": "RunInstances",
:
"OwnerId": "679593333241",
"CreationDate": "2024-08-16T04:11:44.000Z",
"Public": true,
"ProductCodes": [
{
"ProductCodeId": "akjez2r6bd6o7tg3mhptif6ti",
"ProductCodeType": "marketplace"
}
],
"Architecture": "x86_64",
"ImageType": "machine"
},
{
"PlatformDetails": "Linux/UNIX",
"UsageOperation": "RunInstances",
:
ProductCodes.ProductCodeIdですね。
これを指定することで特定製品群のみを許可することが出来るようになります。
今回は AWS CLI からイメージ検索した時に適当に見つけた製品コードを使って検索してみます。

上記ルールを有効化した状態で AMI から取るを眺めてみましょう。

すると、同一製品コードで公開されている AMI のみが検出されました。なるほど。
ImageNames
ImageNamesはそのままですが、イメージ名でフィルターをかけることが出来ます。
イメージ名の指定時には完全一致、あるいは?や*などのワイルドカードを組み合わせることも出来ます。
先程例であげた ftdv を使ってみます。
様々なバージョンが公開されていますが、例えば次のようにバージョン名まで含めた名称で絞り込むことが出来ます。

上記設定の場合であれば、ftdv の 7.7.x バージョンの AMI のみが抽出されました。

CreationDateCondition
CreationDateConditionは AMI が作成されてから何日経過したものまで許可するか を設定することが出来ます。CreationDateCondition.MaximumDaysSinceCreatedに許可する最大の日数を数値で指定します。
ここでは 50 日を指定してみました。

後述しますが、この条件は他の組み合わせた条件と AND で動きます。
上記条件であれば ftdv 7.7 系のうち公開されてから 50 日以内の AMI のみが許可されます。

なるほど。
DeprecationTimeCondition
DeprecationTimeConditionは AMI の廃止日に基づいた条件です。
各 AMI はDeprecationTimeというプロパティをもっており、AMI 廃止機能から廃止スケジュールが設定されていたりします。
コミュニティ AMI でそもそも廃止された AMI を使うことはないと思いますが、組織所有の AMI の中で廃止スケジュールが設定されていて、廃止日から一定期間経過した AMIを使わせないということが出来ます。
こちらはDeprecationTimeCondition.MaximumDaysSinceDeprecatedで廃止日から何日経過したかを数値でシチエします。

上記のように指定できるのですが、私が廃止済みの AMI を所有していなかったので動作確認は出来ませんでした。
基準の評価方法
いくつか複数の条件が追加されましたが、これらを組み合わせた時、どういう挙動になるのでしょうか。
今回のアップデートにあわせて以下のドキュメントが更新されており、その点についても言及されています。
ImageProvidersやImageNamesのリストは OR で動作しますが、同一ImageCriterion内の異なる条件は AND で動作します。

例えば上記の場合だと「ftdv-7.7 あるいは ftdv-7.6 から始まり、かつ AMI 作成日から 50 日以内」あるいは「ftdv-7.6 で始まる」というのが条件になり、次のようなカタログの結果となります。

色々なところで複数条件を指定できて少し難しいのですが、覚えておきましょう。
さいごに
本日は Amazon EC2 「許可された AMI」のイメージ基準へ設定できる条件が追加されたので試してみました。
これまでのイメージプロバイダーのみの条件ではなくより細かい条件が指定できるようになりました。
許可された AMI はホワイトリスト形式なので、どの組織でも導入すれば良いというものではありませんが、厳格な管理をしつつもう少し細かく条件を設定したい場合は今回追加された条件が使えそうです。






