[アップデート] Amazon マシンイメージ(AMI)の無効化ができるようになりました

一時的に使用させたくないけど後で調査のためにイメージを残しておきたいといったケースなどに使えそうです。
2023.10.13

こんにちは、AWS事業本部の平木です!

ふと AWS 公式ドキュメントを眺めていたところ、
Amazon マシンイメージ(以下、AMI) を無効化できるアップデートがあったのでご紹介します。

AMI の無効化とは

「AMI の無効化」とは、文字通り AMI が無効化され使用できなくする状態にできます。

無効化した AMI をコンソール画面で見ると、ステータスが「無効」となっているのが分かります。

無効化することの影響

無効化することの影響はいくつかあります。

AMI の共有の無効化

まず、無効な AMI は共有できなくなり、AMI が公開されていた場合は非公開になります。
AMI が AWS アカウント、Organizations、または OU へ共有されていた場合、共有先のアカウントは AMI を使用できなくなります。

実際に AMI 所有者のアカウントAと共有先のアカウントBを使用し、確認してみました。

無効化前

無効化後

再有効化後

以上の通り、一度無効化してしまうと共有した情報が消えてしまうため、
再度共有したい場合には、再度共有の設定をし直す必要があります。

DescribeImages API 呼び出し

デフォルトでは、無効な AMI は DescribeImages API 呼び出しに表示されません。

# DescribeImages APIで呼び出し[無効化前]
$ aws ec2 describe-images \
>  --region ap-northeast-1 \
>  --owners self \
>  --query Images[].ImageId
[
    "ami-xxxxxxxxxxxxxxxxx",
    "ami-06f50bdccfdbd9f7e"
]
# 無効化
$ aws ec2 disable-image \
>  --region ap-northeast-1 \
>  --image-id ami-06f50bdccfdbd9f7e
{
    "Return": true
}
# DescribeImages APIで呼び出し[無効化後]
$ aws ec2 describe-images \
>  --region ap-northeast-1 \
>  --owners self \
>  --query Images[].ImageId
[
    "ami-xxxxxxxxxxxxxxxxx"
]
# DescribeImages APIで呼び出し[無効化後 / --include-disabledオプション付き]
$ aws ec2 describe-images \
>  --region ap-northeast-1 \
>  --owners self \
>  --query Images[].ImageId \
>  --include-disabled
[
    "ami-06f50bdccfdbd9f7e",
    "ami-xxxxxxxxxxxxxxxxx"
]
# 有効化
$ aws ec2 enable-image \
>  --region ap-northeast-1 \
>  --image-id ami-06f50bdccfdbd9f7e
{
    "Return": true
}
# DescribeImages APIで呼び出し[再有効化後]
$ aws ec2 describe-images \
>  --region ap-northeast-1 \
>  --owners self \
>  --query Images[].ImageId
[
    "ami-06f50bdccfdbd9f7e",
    "ami-xxxxxxxxxxxxxxxxx"
]

上記の通り、--include-disabledオプションを付けることで表示可能です。

その他

無効な AMI は EC2 コンソールでのインスタンス起動の選択肢として利用できなくなります。
たとえば、無効な AMI は起動インスタンスウィザードの AMI カタログや、起動テンプレートの作成時に表示されません。

また、無効化前に作成した既存の起動テンプレートや Auto Scaling グループなどの起動サービスは、無効な AMI を参照し続けることができます。
ただし、無効な AMI からの後続のインスタンス起動は失敗するため、利用可能な AMI のみを参照するように起動テンプレートや Auto Scaling グループを更新する必要があります。

無効になった AMI を使用して以前に起動された EC2 インスタンスは影響を受けず、停止、起動、再起動が可能です。

無効化&有効化手順

マネジメントコンソール

①対象の AMI を選択し、②アクションから ③「AMI を無効にする」を押下します。

注意事項を確認し、問題なければ「AMI を無効にする」を押下し完了です。

有効化したい場合は、①「Disabled images」を選択し、②対象の AMI にチェックを入れ ③アクションから ④「AMI を有効にする」を押下します。

ポップアップの「AMI を有効にする」を押下し完了です。

AWS CLI

無効化したい場合は下記コマンドで無効化できます。

aws ec2 disable-image \
 --image-id <無効化したいイメージ ID>

有効化したい場合は下記コマンドで有効化できます。

aws ec2 enable-image \
 --image-id <有効化したいイメージ ID>

コスト

AMI を無効化しても AMI 自体が削除されたわけではないため、
EBS-backed AMI の場合は、引き続き AMI の EBS スナップショットの課金が発生します。

無効化している間、無駄な料金が発生してしまうため、
「AMI の登録解除およびスナップショットを削除する」または「EBS スナップショットのアーカイブ」 をしていただくのが良さそうです。

EBS スナップショットのアーカイブについては下記を参照ください。

参考

おわりに

今回は、 AMI の無効化のアップデートについてご紹介しました。

先日、AMI のブロックパブリックアクセスが登場しましたが、
AMI をむやみに公開することへのリスクを減らすためのアップデートが続々出てきました。

一時的に使用させたくないけど後で調査のためにイメージを残しておきたいといった急を要す場合等、
様々なユースケースが想定されますので、ぜひキャッチアップいただければと思います。

この記事がどなたかの役に立てば嬉しいです。