AWS S3 存储桶大小已激增,但我不知道如何解决

AWS S3 存储桶大小已激增,但我不知道如何解决

我们的一个 S3 存储桶最近发生了一些事情:

在此处输入图片描述

我开始寻找所有这些额外的东西来自哪里,但我收集的指标似乎与 CloudWatch(或我们的账单)中的情况不符。

该存储桶有许多不同的键前缀(“文件夹”),因此我做的第一件事就是尝试找出其中是否有任何一个对这个数字有重大贡献,如下所示:

aws s3 ls --summarize --human-readable --recursive s3://my-bucket/prefix

然而,所有前缀似乎都不包含大量数据,只不过是几 GB。

我终于尝试跑步

aws s3 ls --summarize --human-readable --recursive s3://my-bucket

...我得到的总大小约为 25GB。我尝试查找“文件夹大小”时做错了什么,还是误解了什么?我如何才能找到所有这些额外存储空间的使用位置(并找出哪个进程正在运行)?

答案1

它是中止分段上传。默认情况下,S3 会无限期地保留每个失败的分段上传的每个已上传部分!某个进程一直失败,并且重试分段上传,而没有明确清理失败的传输。

我们通过临时启用版本控制、设置生命周期规则以在 1 天后删除中止的分段上传块,然后等待一天,在清除块后再次禁用版本控制来解决这个问题。

答案2

关于如何修复此问题,有大量支持和文档。最常见的方法是在一段时间后移动旧版本。

另一个选项是删除不完整的分段上传,AWS 自 2016 年起支持此功能(来源)您可以在 S3 生命周期规则下找到它:

在此处输入图片描述

答案3

我怀疑有人上传了很多东西到你的 S3 然后又删除了。如果你有S3 版本控制启用后您可能会看到很多已删除的文件。

从开始aws s3api list-object-versions并解析输出。

如果您发现不需要的旧版本,您可以aws s3api delete-object ... --version-id ...立即删除它们并摆脱它们。

或者你可以创建一个S3 生命周期策略它将在一定时间后自动永久删除旧版本。

希望有帮助:)

相关内容