禁用 Amazon EC2 AMI - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

禁用 Amazon EC2 AMI

您可以禁用 AMI,以防止系统将其用于实例启动。您无法从已禁用的 AMI 启动新实例。您可以重新启用已禁用的 AMI,使其可以再次用于实例启动。

警告

禁用 AMI 会移除其所有启动权限。

当 AMI 被禁用时:

  • AMI 的状态会更改为 disabled

  • 无法共享已禁用的 AMI。如果 AMI 为公用性质或以前共享过,则会将其设为私有。如果与 Amazon Web Services 账户、组织或组织单位共享了 AMI,则它们将无法访问已禁用的 AMI。

  • 默认情况下,已禁用的 AMI 不会出现在 DescribeImages API 调用中。

  • 禁用的 AMI 不会在我拥有的控制台筛选条件下显示。要查找已禁用的 AMI,请使用已禁用的映像控制台筛选条件。

  • 已禁用的 AMI 不可在 EC2 控制台中选择用于实例启动。例如,已禁用的 AMI 不会出现在启动实例向导的 AMI 目录中,创建启动模板时也不会显示。

  • 启动服务(如启动模板和自动扩缩组)可以继续引用已禁用的 AMI。从已禁用的 AMI 发起的后续实例启动将失败,因此我们建议更新启动模板和自动扩缩组,使其仅引用可用的 AMI。

  • 之前使用随后被禁用的 AMI 启动的 EC2 实例不会受到影响,可以停止、启动和重新启动。

  • 无法删除与已禁用的 AMI 关联的快照。尝试删除关联的快照会导致 snapshot is currently in use 错误。

重新启用 AMI 时:

  • AMI 的状态将更改为 available,可用于启动实例。

  • AMI 可以共享。

  • 在 AMI 被禁用后失去对其的访问权限的 Amazon Web Services 账户、组织和组织单位不会自动重新获得访问权限,但可以再次与它们共享 AMI。

您可以禁用私有和公用 AMI。

您可以归档与已禁用 EBS-backed AMI 关联的快照。这可以帮助您降低与很少使用却需要长期保留的 AMI 相关的存储成本。有关更多信息,请参阅《Amazon EBS 用户指南》中的归档 Amazon EBS 快照

成本

当您禁用 AMI 时,不会删除该 AMI。如果 AMI 是 EBS-backed AMI,则您需要继续为 AMI 的 EBS 快照付费。如果您想保留此类 AMI,则可以通过归档快照来降低存储成本。有关更多信息,请参阅《Amazon EBS 用户指南》中的归档 Amazon EBS 快照。如果您不想保留此类 AMI 及其快照,则必须取消注册相关 AMI 并删除相应快照。有关更多信息,请参阅 EBS 支持的 AMI

先决条件

要禁用或重新启用 AMI,您必须是 AMI 的所有者。

所需的 IAM 权限

要禁用和重新启用 AMI,您必须拥有以下 IAM 权限:

  • ec2:DisableImage

  • ec2:EnableImage

禁用 AMI

您可以使用 EC2 控制台或 Amazon Command Line Interface(Amazon CLI)禁用 AMI。您必须是 AMI 拥有者才能执行此过程。

Console
要禁用 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择 AMI

  3. 从筛选栏中选择 Owned by me(我拥有的)。

  4. 选择 AMI,然后依次选择操作禁用 AMI。您可以同时选择多个 AMI,一并将其禁用。

  5. 禁用 AMI窗口中,选择禁用 AMI

Amazon CLI
要禁用 AMI

使用 disable-image 命令并指定 AMI 的 ID。

aws ec2 disable-image --image-id ami-1234567890abcdef0

预期输出

{ "Return": "true" }

描述已禁用的 AMI

您可以在 EC2 控制台中或使用 Amazon CLI 查看已禁用的 AMI。

您必须是 AMI 所有者才能查看已禁用的 AMI。由于已禁用的 AMI 被设为私有,因此如果您不是所有者,则无法对其进行查看。

Console
要查看已禁用的 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择 AMI

  3. 从筛选栏中选择已禁用的映像

    “已禁用的映像”筛选器。
Amazon CLI

默认情况下,当您使用 describe-images 命令描述所有 AMI 时,已禁用的 AMI 不会出现在结果中。这是因为默认值为 --no-include-disabled。要在结果中包括已禁用的 AMI,您必须指定 --include-disabled 参数。

要在描述所有 AMI 时包括所有已禁用的 AMI

使用 describe-images 命令并指定 --include-disabled 参数,以检索已禁用的 AMI 以及所有其他 AMI。或者,指定 --owners self,以便仅检索您拥有的 AMI。

aws ec2 describe-images \ --region us-east-1 \ --owners self --include-disabled

如果您指定了已禁用的 AMI 的 ID,但未指定 --include-disabled,则结果中将返回相应已禁用的 AMI。

aws ec2 describe-images \ --region us-east-1 \ --image-ids ami-1234567890EXAMPLE
要仅检索已禁用的 AMI

指定 --filters Name=state,Values=disabled。您必须指定 --include-disabled,否则将会收到错误。

aws ec2 describe-images \ --include-disabled \ --filters Name=state,Values=disabled

示例输出

State 字段显示 AMI 的状态。disabled 表示 AMI 已被禁用。

{ "Images": [ { "VirtualizationType": "hvm", "Description": "Provided by Red Hat, Inc.", "PlatformDetails": "Red Hat Enterprise Linux", "EnaSupport": true, "Hypervisor": "xen", "State": "disabled", "SriovNetSupport": "simple", "ImageId": "ami-1234567890EXAMPLE", "DeprecationTime": "2023-05-10T13:17:12.000Z" "UsageOperation": "RunInstances:0010", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "SnapshotId": "snap-111222333444aaabb", "DeleteOnTermination": true, "VolumeType": "gp2", "VolumeSize": 10, "Encrypted": false } } ], "Architecture": "x86_64", "ImageLocation": "123456789012/RHEL-8.0.0_HVM-20190618-x86_64-1-Hourly2-GP2", "RootDeviceType": "ebs", "OwnerId": "123456789012", "RootDeviceName": "/dev/sda1", "CreationDate": "2019-05-10T13:17:12.000Z", "Public": false, "ImageType": "machine", "Name": "RHEL-8.0.0_HVM-20190618-x86_64-1-Hourly2-GP2" } ] }

重新启用已禁用的 AMI

您可以重新启用已禁用的 AMI。您必须是 AMI 拥有者才能执行此过程。

Console
要重新启用已禁用的 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择 AMI

  3. 从筛选栏中选择已禁用的映像

  4. 选择 AMI,然后依次选择操作启用 AMI。您可以同时选择多个 AMI,一并将其重新启用。

  5. 启用 AMI窗口中,选择启用

Amazon CLI
要重新启用已禁用的 AMI

使用 enable-image 命令并指定 AMI 的 ID。

aws ec2 enable-image --image-id ami-1234567890abcdef0

预期输出

{ "Return": "true" }