如何解決刪除我 Amazon EBS 快照的問題?

3 分的閱讀內容
0

我試著刪除我的 Amazon Elastic Block Store (Amazon EBS) 快照,但我無法刪除。如何解決此問題?

簡短說明

下列為 Amazon EBS 快照刪除失敗的常見原因:

  • AWS Identity and Access Management (IAM) 使用者或角色並無執行 DeleteSnapshot API 動作的許可權限。
  • 另一個帳戶擁有快照,並與您的 AWS 帳戶共用之。
  • 已註冊的 Amazon Machine Image (AMI) 會使用 EBS 磁碟區根裝置的快照。
  • 快照位於資源回收筒中。
  • 快照是在 AWS Backup 中建立,或從資源回收筒還原在 AWS Backup 中建立的快照。
  • 快照是使用 Amazon Data Lifecycle Manager 所建立,且位於資源回收筒中或從中還原。
  • DeleteSnapshot API 結果不會立即顯示於後續命令中。

解決方式

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

IAM 使用者或角色並無執行 DeleteSnapshot API 動作的許可權限

於 AWS CloudTrail 中,您會收到錯誤訊息:"You are not authorized to perform this operation. Encoded authorization failure message: Bght_tAZ...... (您並無執行此作業的授權。編碼授權失敗訊息:Bght_tAZ......)"

如要解碼授權失敗訊息,請執行下列命令:

$  aws sts decode-authorization-message --encoded-message encoded_message

**注意:**請以您所收到的編碼授權失敗訊息取代 encoded_message

您還可使用 IAM 政策模擬器進行疑難排解。檢查與 IAM 使用者或角色相關的政策,以查看其是否具有拒絕 ec2:DeleteSnapshot 動作的規則。

拒絕 ec2:DeleteSnapshot 動作的 JSON 政策範例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Deny",
      "Action": "ec2:DeleteSnapshot",
      "Resource": "*"
    }
  ]
}

此外,請檢查拒絕任何必須滿足作業才能完成之條件的規則,例如 ec2:SnapshotID。更新 IAM 使用者或角色政策,以允許刪除快照。

如需相關條件金鑰的清單,請參閱 Amazon EC2 的動作、資源和條件金鑰的 DeleteSnapshot 一節

快照是由不同的 AWS 帳戶所擁有和共用

您收到錯誤訊息:「快照 'snap-abcdef1234567890' 不存在。

您無法從您的帳戶中刪除其他帳戶擁有並與您帳戶共用的快照。若您可存取擁有快照的帳戶,則可將其刪除。若無,則您必須聯絡該帳戶的擁有者。

如要檢查快照的擁有者,請執行下列 describe-snapshots AWS CLI 命令:

$ aws ec2 describe-snapshots --snapshot-id snap-abcdef1234567890

**注意:**請以你的快照 ID 取代 snap-abcdef1234567890

您還可於Amazon Elastic Compute Cloud (Amazon EC2) 主控台中找到快照的相關資訊。如需詳細資訊,請參閱檢視 Amazon EBS 快照資訊

若您擁有快照並想要撤銷與其他帳戶共用快照,請依下列步驟作業:

  1. 開啟 Amazon EC2 主控台
  2. 在導覽窗格中,選擇 Snapshots (快照)。
  3. 選取您共用的快照,然後選擇 Actions, Modify permissions (動作、修改許可)。
  4. Shared accounts (共用帳戶) 之下,選取您要撤銷快照共用之帳戶的帳戶 ID。然後,選擇 Remove selected (移除所選項目)。
  5. 選擇 Save changes (儲存變更)。

已註冊的 AMI 會使用 Amazon EBS 磁碟區根裝置的快照

您收到錯誤訊息: "The snapshot 'snap-abcdef1234567890' is currently in use by ami-abcdef1234567890. (ami-abcdef1234567890 目前正在使用快照 'snap-abcdef1234567890'。)"

使用 AWS 管理主控台或 AWS CLI 以取消註冊 AMI。然後,刪除快照

您可於錯誤訊息中找到 AMI ID。或者,您還可執行下列 describe-snapshots AWS CLI 命令:

$ aws ec2 describe-snapshots --snapshot-ids snap-abcdef1234567890

您可於 Description (說明) 一節中找到 AMI ID:

{
  "Snapshots": [
    {
      "Description": "Created by CreateImage(i-abcdef1234567890) for ami-abcdef1234567890",
      "Encrypted": false,
      "OwnerId": "111122223333",
      "Progress": "100%",
      "SnapshotId": "snap-abcdef1234567890",
      "StartTime": "2022-11-12T03:15:16.272000+00:00",
      "State": "completed",
      "VolumeId": "vol-abcdef1234567890",
      "VolumeSize": 8,
      "StorageTier": "standard"
    }
  ]
}

快照位於資源回收筒中

您收到錯誤訊息:"An error occurred (InvalidSnapshot.NotFound) when calling the DeleteSnapshot operation. The snapshot 'snap-abcdef1234567890' does not exist. (呼叫 DeleteSnapshot 作業時,發生錯誤 (InvalidSnapshot.NotFound)。快照 'snap-abcdef1234567890' 不存在。)"

若您使用 AWS CLI 刪除快照並收到上述錯誤訊息,則該快照可能位於資源回收筒中。您無法刪除資源回收筒中的快照。僅於保留期間到期時,才可刪除快照。

如要檢查快照是否位於資源回收筒中,請執行 list-snapshots-in recycle-bin AWS CLI 命令:

aws ec2 list-snapshots-in-recycle-bin --snapshot-id snap-abcdef1234567890 --region region

**注意:**請以您的 AWS 區域取代 region (區域)。

範例輸出:

{
  "Snapshots": [
    {
      "SnapshotId": "snap-0460a240fc523552e",
      "RecycleBinEnterTime": "2022-11-13T16:33:54.707000+00:00",
      "RecycleBinExitTime": "2022-11-14T16:33:54.707000+00:00",
      "Description": "",
      "VolumeId": "vol-08d1428974b817a18"
    }
  ]
}

若您需要在保留期限到期前刪除快照,則可以從資源回收筒還原快照。請確定您的 IAM 使用者或角色具有正確的許可,以檢視和復原資源回收筒中的快照

然後,檢查 AWS 區域的保留規則。若為標籤等級保留規則,請修改快照標籤,使其不符合保留規則。然後,刪除快照。若為區域等級規則,請刪除保留規則,然後刪除快照。刪除保留規則不會影響資源回收筒中的其他快照。

快照會建立於 AWS Backup 中,或是從資源回收筒還原在 AWS Backup 中建立的快照

您會收到錯誤訊息:"snap-abcdef1234567890 This snapshot is managed by AWS Backup service and cannot be deleted via EC2 APIs. If you wish to delete this snapshot, please do so via the Backup console. (snap-abcdef1234567890 此快照是由 AWS Backup 服務所管理,無法透過 EC2 API 刪除。若您希望刪除此快照,請透過 Backup 主控台執行此作業。)"

您無法使用 Amazon EC2 主控台或 AWS CLI 來刪除於 AWS Backup 中建立和管理的快照。您必須從 AWS Backup 主控台刪除快照。記下快照 ID,然後依循刪除備份的步驟執行。

不過,您無法使用 AWS Backup 主控台來刪除在 AWS Backup 中建立、傳送至資源回收筒,接著還原的快照。您必須使用 Amazon EC2 主控台或 AWS CLI 刪除快照。

快照是使用 Amazon Data Lifecycle Manager 所建立,並儲存於資源回收筒中

Amazon Data Lifecycle Manager 不會管理使用 Amazon Data Lifecycle Manager 或快照政策所建立資源回收筒中的快照。您必須使用 Amazon EC2 主控台或 AWS CLI 來刪除快照。

DeleteSnapshot API 結果不會立即顯示於後續需求中

所有 Amazon EC2 API 會依循最終一致性模式。這表示當您使用 DeleteSnapshot API 時,您執行的後續命令可能無法立即看到結果。

如要檢查最近刪除的快照狀態,請執行下列 describe-snapshots AWS CLI 命令:

$ aws ec2 describe-snapshots --region region --snapshot-ids snap-abcdef1234567890

若您收到下列錯誤訊息,則表示快照已成功刪除:"An error occurred (InvalidSnapshot.NotFound) when calling the DescribeSnapshots operation: The snapshot 'snap-abcdef1234567890' does not exist. (呼叫 DescribeSnapshots 作業時發生錯誤 (InvalidSnapshot.NotFound):快照 'snap-abcdef1234567890' 不存在。)"


AWS 官方
AWS 官方已更新 1 年前