为什么我无法使用 Amazon S3 控制台或 AWS CLI 删除 S3 存储桶,尽管我拥有完全权限或根权限?

上次更新日期:2021 年 1 月 5 日

我尝试使用 Amazon S3 控制台或 AWS 命令行界面 (AWS CLI) 来删除 Amazon Simple Storage Service (S3) 存储桶。我对该存储桶拥有完全或根权限。但是,我的删除请求失败了,存储桶依然可用。我如何才能删除该存储桶?

简短描述

您无法使用 Amazon S3 控制台删除包含 100000 或以上对象的 S3 存储桶。您也无法使用 AWS CLI 删除启用了版本控制功能的 S3 存储桶。有关更多信息,请参阅删除或清空存储桶

注意:如果在运行 AWS CLI 命令时收到错误, 请确保您使用的是最新的 AWS CLI 版本

如要在这两种情况下删除 S3 存储桶,请首先暂停版本控制(如果已经启用),然后设置生命周期规则,以使存储桶中的对象在一天后过期。删除对象后,您就可以删除存储桶。

解决方法

警告:如下流程会永久删除您的 S3 存储桶中的任何数据。从存储桶中删除和清除的数据无法恢复。在您开始前,请检查存储桶中的所有对象和数据,并确认不再需要它们。

执行如下步骤以暂停版本控制,然后将生命周期规则设置为删除存储桶中的对象:

1.    打开 Amazon S3 控制台

2.    选择存储桶名称,从而打开您希望删除的存储桶。

3.    (可选)如果已经启用版本控制,请首先对存储桶暂停版本控制

4.    选择 Management(管理)视图。

5.    在 Lifecyle Rules(生命周期规则)下,选择 Create lifecycle rule(创建生命周期规则)。

6.    对于 Lifecycle rule name(生命周期规则名称),输入生命周期规则的名称。

7.    要在整个存储桶上运行规则,请选择 This rule applies to all objects in the bucket(此规则适用于存储桶中的所有对象)。要在某个前缀上运行规则,请选择 Limit the scope of this rule using one or more filters(使用一个或多个筛选器限制此规则的范围)。然后,在 Prefix(前缀)下输入前缀名称。

8.    在 Lifecycle rule actions(生命周期规则操作)下,选择以下选项:

使当前版本的对象过期
永久删除以前版本的对象
删除过期的删除标记或未完成的分段上传

9.    对于 Expire current versions of objects(使当前版本的对象过期),在 Number of days after object creation(对象创建后的天数)下输入“1”。

10.    对于 Permanently delete previous versions of objects(永久删除以前版本的对象),在 Number of days after objects become previous versions(对象成为旧版本之后的天数)下输入“1”。

11.    对于 Delete expired delete markers or incomplete multipart uploads(删除过期的删除标记或未完成的分段上传),请选择 Delete incomplete multipart uploads(删除未完成的分段上传)。然后,输入“1”以指定 Number of days(天数)。

12.    选择 Create rule(创建规则)。

注意:如果您收到错误消息“This rule has prefix(es) that are overlapping with (previous_rule_name)”,您仍可保存规则。

生命周期规则在世界协调时 (UTC) 午夜左右开始运行。生命周期规则开始运行后,不会立即删除对象,但对象将被标记为删除。当对象被标记为删除时,您不再需要为这些对象付费。有关更多信息,请参阅配置对象过期

如果存储桶中有大量对象,那么这些对象可能会继续在 Amazon S3 控制台中出现几天。此条件尤其适用于启用了版本控制的 Amazon S3 存储桶。如果存储桶启用了版本控制,在删除对象的当前版本后将会创建删除标记。删除标记至少存在一天以后,生命周期规则还会清理删除标记。从删除标记存在一天后,到生命周期规则发现删除标记的存在时间并清除删除标记,可能需要几天时间。

在完全删除对象(包括删除标记)后,您可以删除存储桶


这篇文章对您有帮助吗?


您是否需要账单或技术支持?