弃用 AMI
您可以弃用 AMI,以表明该 AMI 已过期且不应使用。您还可以为 AMI 指定未来弃用日期,表明 AMI 何时过期。例如,您可能会弃用不再主动维护的 AMI,或是已被较新版本取代的 AMI。默认情况下,已弃用的 AMI 不会显示在 AMI 列表中,防止新用户使用过期的 AMI。但是,现有用户和启动服务(如启动模板和 Auto Scaling 组)可以通过指定其 ID 来继续使用已弃用的 AMI。要删除 AMI 以便使用户和服务无法使用,您必须取消注册。
AMI 弃用后:
-
对于 AMI 用户,已弃用的 AMI 不会显示在 DescribeImages API 调用中,除非您指定其 ID 或要求必须显示已弃用的 AMI。AMI 拥有者可继续在 DescribeImages API 调用中看到已弃用的 AMI。
-
对于 AMI 用户,已弃用的 AMI 无法通过 EC2 控制台进行选择。例如,已弃用的 AMI 不会出现在启动实例向导的 AMI 目录中。AMI 拥有者可继续在 EC2 控制台中看到已弃用的 AMI。
-
对于 AMI 用户,如果您知道已弃用的 AMI 的 ID,则可以通过 API、CLI 或开发工具包继续使用已弃用的 AMI 启动实例。
-
启动服务(如启动模板和 Auto Scaling 组)可以继续引用已弃用的 AMI。
-
使用随后被弃用的 AMI 启动的 EC2 实例不会受到影响,可以停止、启动和重新启动。
您可以弃用私有和公用 AMI。
您还可以创建 Amazon Data Lifecycle Manager EBS 支持的 AMI 策略,以自动化 EBS 支持的 AMI 的弃用。有关更多信息,请参阅自动化 AMI 生命周期。
默认情况下,所有公用 AMI 的弃用日期设置为自 AMI 创建日期起的两年。您可以将弃用日期设置为早于两年。要取消弃用日期,或将弃用移至未来某一日期,您必须通过仅将 AMI 与特定 AWS 账户共享来将其设为私有。
成本
当您弃用 AMI 时,不会删除该 AMI。AMI 拥有者须继续为 AMI 的快照付费。要停止支付快照费用,AMI 拥有者必须通过取消注册删除 AMI。
限制
弃用 AMI
您可以在特定日期和时间弃用 AMI。您必须是 AMI 拥有者才能执行此过程。
- Console
-
在特定日期弃用 AMI
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在左侧导航器中选择 AMI。
-
从筛选栏中选择 Owned by me(我拥有的)。
-
选取相应 AMI,然后选择 Actions(操作)、Manage AMI Deprecation(管理 AMI 弃用)。您可以选择多个 AMI,一次性为多个 AMI 设置同一弃用日期。
-
选择 Enable(启用)复选框,然后输入弃用日期和时间。
弃用日期的上限为从当前日期起 10 年,但公有 AMI 除外,其上限为自创建之日起 2 年。您不能指定一个过去的日期。
-
选择保存。
- AWS CLI
-
在特定日期弃用 AMI
使用 enable-image-deprecation 命令。指定 AMI 的 ID 以及弃用 AMI 的日期和时间。如果指定以秒为单位的值,Amazon EC2 会将秒四舍五入到最近的分钟数。
deprecate-at
的上限为从当前日期起 10 年,但公有 AMI 除外,后者的上限为自创建之日起 2 年。您不能指定一个过去的日期。
aws ec2 enable-image-deprecation \
--image-id ami-1234567890abcdef0
\
--deprecate-at "2021-10-15T13:17:12.000Z"
预期输出
{
"Return": "true"
}
检查上次使用 AMI 的时间
LastLaunchedTime
是一个时间戳,指示您上次使用 AMI 启动实例时的时间戳。最近未用于启动实例的 AMI 可能需要弃用或注销。
- Console
-
- AWS CLI
-
查看 AMI 的上次启动时间
运行 describe-image-attribute 命令并指定 --attribute
lastLaunchedTime
。您必须是 AMI 的拥有者才能执行此命令。
aws ec2 describe-image-attribute \
--image-id ami-1234567890example
\
--attribute lastLaunchedTime
示例输出
{
"LastLaunchedTime": {
"Value": "2022-02-10T02:03:18Z"
},
"ImageId": "ami-1234567890example",
}
描述已弃用的 AMI
您可以查看 AMI 的弃用日期和时间,然后按弃用日期对所有 AMI 进行筛选。您也可以使用 AWS CLI 来描述已弃用的所有 AMI(即已超出弃用日期)。
- Console
-
- AWS CLI
-
当您使用 describe-images 命令时,结果会因您是 AMI 用户或 AMI 拥有者而有所不同。
-
如果您是 AMI 用户:
默认情况下,当您使用 describe-images 命令描述所有 AMI 时,不属于您但与您共享的已弃用 AMI 不会出现在结果中。这是因为默认值为 --no-include-deprecated
。要在结果中包括已弃用的 AMI,您必须指定 --include-deprecated
参数。
-
如果您是 AMI 拥有者:
当您使用 describe-images 命令描述所有 AMI 时,您拥有的所有 AMI(包括已弃用的 AMI)均会显示在结果中。您无需指定 --include-deprecated
参数。此外,您不能通过使用 --no-include-deprecated
从结果中排除已弃用的 AMI。
如果 AMI 被弃用,DeprecationTime
字段将显示在结果中。
已弃用的 AMI 是指弃用日期在过去的 AMI。如果您已将弃用日期设置为将来的日期,则 AMI 尚未弃用。
在描述所有 AMI 时包括所有已弃用的 AMI
使用 describe-images 命令并指定 --include-deprecated
参数,以在结果中包括非您所有的所有已弃用的 AMI。
aws ec2 describe-images \
--region us-east-1
\
--owners 123456example
--include-deprecated
描述 AMI 的弃用日期
使用 describe-images 命令并指定 AMI 的 ID。
请注意,如果您同时指定 --no-include-deprecated
与 AMI ID,则会在结果中返回已弃用的 AMI。
aws ec2 describe-images \
--region us-east-1
\
--image-ids ami-1234567890EXAMPLE
预期输出
DeprecationTime
字段显示将 AMI 设置为已弃用的日期。如果 AMI 未设置为已弃用,则 DeprecationTime
字段不会显示在输出结果中。
{
"Images": [
{
"VirtualizationType": "hvm",
"Description": "Provided by Red Hat, Inc.",
"PlatformDetails": "Red Hat Enterprise Linux",
"EnaSupport": true,
"Hypervisor": "xen",
"State": "available",
"SriovNetSupport": "simple",
"ImageId": "ami-1234567890EXAMPLE",
"DeprecationTime": "2021-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": true,
"ImageType": "machine",
"Name": "RHEL-8.0.0_HVM-20190618-x86_64-1-Hourly2-GP2"
}
]
}
取消弃用 AMI
您可以取消弃用 AMI,即删除 Deprecation time(弃用时间)字段(控制台),或从 describe-images 输出 (AWS CLI) 中删除 DeprecationTime
字段。您必须是 AMI 拥有者才能执行此过程。
- Console
-
- AWS CLI
-
取消弃用 AMI
使用 disable-image-deprecation 命令并指定 AMI 的 ID。
aws ec2 disable-image-deprecation \
--image-id ami-1234567890abcdef0
预期输出
{
"Return": "true"
}