棄用 AMI - Amazon Elastic Compute Cloud

棄用 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 使用者,不能透過 EC2 主控台選擇已取代的 AMI。例如,已取代的 AMI 不會出現在啟動執行個體精靈的 AMI 目錄中。AMI 擁有者繼續在 EC2 主控台中查看已取代的 AMI。

  • 對於 AMI 使用者,如果您知道已取代的 AMI 的 ID,則可以使用 API、CLI 或 SDK 透過已取代的 AMI 來啟動執行個體。

  • 啟動服務 (例如啟動範本和 Auto Scaling 群組) 可以繼續參考已取代的 AMI。

  • 使用隨後被取代的 AMI 來啟動的 EC2 執行個體不會受到影響,而且可以停止、啟動和重新啟動。

您可以同時取代私有和公有 AMI。

您也可建立 Amazon Data Lifecycle Manager EBS 後端 AMI 政策,以自動化 EBS 後端 AMI 的取代。如需詳細資訊,請參閱 自動化 AMI 生命週期

注意

在預設情況下,所有公用 AMI 的棄用日期都設定為自 AMI 建立日期起兩年。您可將棄用日期設定為早於兩年。若要取消棄用日期或將棄用日期延後,您必須將與指定的 AWS 帳戶共享 AMI,使該 AMI 成為私有。

成本

當您取代 AMI 時,不會刪除 AMI。AMI 擁有者繼續為 AMI 的快照付費。要停止支付快照的費用,AMI 擁有者必須透過取消註冊 AMI 來刪除它。

限制

  • 若要取代 AMI,您必須是 AMI 的擁有者。

棄用 AMI

您可以在特定的日期和時間取代 AMI。您必須是 AMI 擁有者才能執行此程序。

Console

在特定日期取代 AMI

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽窗格中,選擇 AMI

  3. 從篩選條件列中,選擇 Owned by me (由我擁有)。

  4. 選取 AMI,然後依序選擇 Actions (動作)、Manage AMI Deprecation (管理 AMI 取代)。您可以選取多個 AMI,一次設定多個 AMI 的相同取代日期。

  5. 選取 Enable (啟用) 核取方塊,然後輸入取代日期和時間。

    棄用日期的上限是從現在起 10 年,但公用 AMI 除外,其上限是自建立日期起 2 年。您無法指定過去的日期。

  6. 選擇 Save (儲存)。

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" }

上次啟動時間

LastLaunchedTime 是一個時間戳記,表示您的 AMI 上次用於啟動執行個體的時間。最近未用於啟動執行個體的 AMI 可能就是待移除或取消註冊的項目。

注意
  • 使用 AMI 啟動執行個體時,在報告該使用情況之前會有 24 小時延遲。

  • lastLaunchedTime 資料從 2017 年 4 月開始提供。

Console

檢視 AMI 的上次啟動時間

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽窗格中,選擇 AMI

  3. 從篩選條件列中,選擇 Owned by me (由我擁有)。

  4. 選取 AMI,然後檢查 Last launched time (上次啟動時間) 欄位 (若您選取 AMI 旁的核取方塊,其位於 Details (詳細資料) 索引標籤)。此欄位顯示上次使用 AMI 啟動執行個體的日期和時間。

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

檢視 AMI 的取代日期

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽器中,選擇 AMI,然後選取該 AMI。

  3. 檢查 Deprecation time (取代時間) 欄位 (若您選取 AMI 旁的核取方塊,其位於 Details (詳細資料) 索引標籤)。該欄位顯示 AMI 的取代日期和時間。若欄位為空的,則 AMI 不會遭到取代。

依取代日期篩選 AMI

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽窗格中,選擇 AMI

  3. 從篩選條件列中,選擇 Owned by me (由我擁有) 或 Private images (私有映像) (私有映像包括與您共享以及您擁有的 AMI)。

  4. 在搜尋列中,輸入 Deprecation time (當您輸入字母時,Deprecation time (取代時間) 篩選條件隨即顯示),隨後選擇一個運算子及一個日期和時間。

AWS CLI

當您使用 describe-images 命令描述所有 AMI 時,結果會有所不同,這取決於您是 AMI 使用者還是 AMI 擁有者。

  • 如果您是 AMI 使用者:

    根據預設,當您使用 describe-images 命令時,不屬於您但是與您共用的已取代的 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 輸出 (DeprecationTime) 的 AWS CLI 欄位移除日期和時間。您必須是 AMI 擁有者才能執行此程序。

Console

取消取代 AMI

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在左側導覽窗格中,選擇 AMI

  3. 從篩選條件列中,選擇 Owned by me (由我擁有)。

  4. 選取 AMI,然後依序選擇 Actions (動作)、Manage AMI Deprecation (管理 AMI 取代)。您可以選取多個 AMI,一次取消多個 AMI 的取代。

  5. 清除 Enable (啟用) 核取方塊,然後選擇 Save (儲存)。

AWS CLI

取消取代 AMI

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

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

預期的輸出結果

{ "Return": "true" }