在 Amazon S3 中执行大量删除操作后,如何故障排除列表命令无响应的问题?

1 分钟阅读
0

我执行了大量文件删除操作,然后想在我的 Amazon Simple Storage Service(Amazon S3)桶上运行列表命令。但是,列表命令停止响应并且不返回任何输出。

解决方案

如果您删除了大量文件并且出现了 lslist-objects 命令停止响应的问题,请按照以下故障排除步骤进行操作:

移除过期的对象删除标记

启用版本控制的桶中,当您对受版本控制的对象执行删除操作并且未指定版本 ID 时,系统会创建一个删除标记。当生命周期配置规则将以前的对象版本设置为过期时,桶将包含与过期对象关联的删除标记。如果有成千上万的删除标记,则列表操作可能会超时。因此,最佳实践是从桶中](https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex7)移除过期的对象删除标记[,以提高列表操作的性能。

要有效地清理过期的对象删除标记,请使用生命周期规则:

  1. 打开 Amazon S3 控制台
  2. 从桶列表中,选择包含过期的对象删除标记的桶。
  3. 选择管理选项卡。
  4. 选择添加生命周期规则并输入规则名称。然后,选择下一步
  5. 对于存储类转换,请跳过此部分并选择下一步
  6. 对于配置过期,请选择清理过期对象删除标记。然后,选择下一步
  7. 查看生命周期规则设置,然后选择保存

尝试 list-objects-v2 命令或最新版本的 AWS CLI

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

list-objects-v2 命令,或 ListObjectsV2 API 调用,是列表操作的更新版本,其中包括一些性能改进。下面的示例命令请求 awsexamplebucket 中的对象列表:

aws s3api list-objects-v2 --bucket awsexamplebucket

**注意:**为了实现向后兼容,Amazon S3 继续支持 ListObjects API 调用。

使用 Amazon S3 清单报告

您可以使用 Amazon S3 清单报告来获取对象列表,而不是执行列表操作。当您对包含数亿个对象的桶执行多个列表操作时,该过程可能非常具有挑战性,并且消耗很多资源。

您可以获取桶或前缀的每日或每周 Amazon S3 清单报告,也可以在报告中包含其他对象元数据。您可以将清单报告作为批量操作的输入,也可以使用 Amazon Athena 查询报告

相关信息

Amazon S3 定价

AWS 官方
AWS 官方已更新 7 个月前