如何解决删除 Amazon EBS 快照时出现的问题?

3 分钟阅读
0

我正在尝试删除我的 Amazon Elastic Block Store (Amazon EBS) 快照,但无法删除。如何解决此问题?

简短描述

以下是 Amazon EBS 快照删除失败的常见原因:

  • AWS Identity and Access Management (IAM) 用户或角色无权运行 DeleteSnapshot API 操作。
  • 另一个账户拥有快照并与您的 AWS 账户共享。
  • EBS 卷根设备的快照由注册的 Amazon Machine Image (AMI) 使用。
  • 快照在回收站中。
  • AWS Backup 中创建快照,或者从回收站中恢复在 AWS Backup 中创建的快照。
  • 使用 Amazon Data Lifecycle Manager 创建快照,此快照在回收站中或从回收站中恢复。
  • 后续命令无法立即看到 DeleteSnapshot API 结果。

解决方案

**注意:**如果您在运行 AWS Command Line Interface(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

IAM 用户或角色无权运行 DeleteSnapshot API 操作

在 AWS CloudTrail 中,您会收到错误消息:“您无权执行此操作。已编码授权失败消息: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

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

您还可以在 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(保存更改)。

Amazon EBS 卷根设备的快照由注册的 AMI 使用

您会收到错误消息:“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"
    }
  ]
}

快照在回收站中

您会收到错误消息:“调用 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

注意:请将 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 区域的保留规则。对于标签级别的保留规则,修改快照标签,使其与保留规则不匹配。然后,删除快照。对于区域级规则,删除保留规则,然后删除快照。删除保留规则不会影响回收站中的其他快照。

在 AWS Backup 中创建快照,或者从回收站中恢复在 AWS Backup 中创建的快照。

您会收到错误消息:“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

如果您收到以下错误消息,则表明成功删除快照:“调用 DescribeSnapshots 操作时出现错误 (InvalidSnapshot.NotFound):快照 'snap-abcdef1234567890'不存在。


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