跳至内容

当删除失败时,如何删除 Amazon EBS 快照?

3 分钟阅读
0

我无法删除 Amazon Elastic Block Store (Amazon EBS) 快照。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

根据您收到的错误消息或遇到的问题选择解决方法。

编码授权失败错误

在 AWS CloudTrail 中,您会收到以下错误消息:

"You are not authorized to perform this operation.Encoded authorization failure message: Bght_tAZ..."

出现此错误是因为 AWS Identity and Access Management (IAM) 用户或角色没有运行 DeleteSnapshot API 操作的权限。

要解码授权失败消息,请运行以下命令:

aws sts decode-authorization-message --encoded-message your_encoded_message

**注意:**请将 your_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 用户或角色策略以允许删除快照。

快照不存在错误

您会收到以下错误消息:

"The snapshot 'snap-abcdef1234567890' does not exist."

出现此错误是因为另一个 AWS 账户拥有该快照并将其与您的账户共享。

如果您有权访问共享快照的账户,则可以删除该快照。否则,您必须请求其他账户的所有者删除快照。

要查看快照的所有者,请运行以下 describe-snapshots AWS CLI 命令:

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

**注意:**请将 snap-abcdef1234567890 替换为您的快照 ID。

您还可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 控制台来获取有关快照的信息

如果您拥有快照并且不想再与其他账户共享快照,请完成以下步骤:

  1. 打开 Amazon EC2 控制台
  2. 在导航窗格中,选择 Snapshots(快照)。
  3. 选择您共享的快照,然后选择 Actions(操作)。
  4. 选择 Snapshot settings(快照设置),然后选择 Modify permissions(修改权限)。
  5. Shared accounts(共享帐户)下,选择要撤消快照共享的账户 ID。
  6. 选择 Remove selected(移除选定项)。
  7. 选择 Save changes(保存更改)。

AMI 正在使用快照错误

您会收到以下错误消息:

"The snapshot 'snap-abcdef1234567890' is currently in use by ami-abcdef1234567890."

出现此错误是因为某个已注册的亚马逊机器映像 (AMI) 正在使用 EBS 卷根设备的快照。

要解决此问题,请注销您的 AMI,然后删除快照

如果您无法再查看包含 AMI ID 的错误消息,请运行以下 describe-snapshots AWS CLI 命令:

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

**注意:**请将 snap-abcdef1234567890 替换为您的快照 ID。

您可以在 JSON 文件的 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"
    }
  ]
}

DeleteSnapshot 操作错误

您会收到以下错误消息:

"An error occurred (InvalidSnapshot.NotFound) when calling the DeleteSnapshot operation.The snapshot 'snap-abcdef1234567890' does not exist."

如果您使用 AWS CLI 删除快照并收到上述错误消息,则该快照可能位于回收站中。

您无法删除位于回收站中的快照。只有在保留期结束时,您才能删除快照。

要检查快照是否位于回收站中,请运行 list-snapshots-in-recycle-bin AWS CLI 命令:

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

**注意:**请将 snap-abcdef1234567890 替换为您的快照 ID,并将 region 替换为您的 AWS 区域。

输出示例:

{  "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 CLI 删除快照。对于区域级规则,请删除保留规则,然后使用 AWS CLI 删除快照。您无法使用 AWS Backup 控制台删除在 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."

当您使用 Amazon EC2 控制台或 AWS CLI 删除 AWS Backup 创建的快照时,就会出现此错误。或者,当 AWS Backup 创建的快照位于回收站中,而您尝试还原该快照时也会出现此错误。

您必须使用 AWS Backup 控制台手动删除快照

**重要事项:**您无法使用 AWS Backup 控制台删除 AWS Backup 创建、发送到回收站然后还原的快照。您必须使用 Amazon EC2 控制台AWS CLI 删除快照。

ResourceNotFound 错误

在尝试删除快照时,您收到了 "ResourceNotFound" 错误。当您使用 Amazon Data Lifecycle Manager 创建并删除快照,而 Amazon EBS 将其保留在回收站时,就会出现此错误。

通过 Amazon Data Lifecycle Manager 或快照策略创建的位于回收站中的快照并不由 Amazon Data Lifecycle Manager 进行管理。您必须使用 Amazon EC2 控制台AWS CLI 删除快照。

DeleteSnapshot API 结果无法立即显示

由于 Amazon EC2 API 遵循最终一致性模型,因此您在 DeleteSnapshot 之后运行的后续命令可能无法立即看到结果。

要检查最近删除的快照状态,请运行以下 describe-snapshots AWS CLI 命令:

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

**注意:**请将 region 替换为您的区域,并将 snap-abcdef1234567890 替换为您的快照 ID。

如果您收到以下错误消息,则表示您已成功删除快照:

"An error occurred (InvalidSnapshot.NotFound) when calling the DescribeSnapshots operation: The snapshot 'snap-abcdef1234567890' does not exist."

AWS 官方已更新 7 个月前