用于快速删除和空排出S3存储桶的工具(支持版本指导)
#aws #go #s3
  • S3控制台中存在清空S3存储桶的按钮,但在CLI或SDK中不存在
  • 删除S3存储桶时,必须将其空删除才能删除。
    • 可以用CLI中的aws s3 rb --force完成,但是很慢。
  • 您想清空它,但是我无法删除 +重新创建水桶,因为它取决于其他资源。
  • 您必须等一天才能尝试使用S3的生命周期功能删除它
  • 删除在版本上进行时很麻烦

我已经发布了一个解决这种痒感的OSS工具。

您现在可以非常容易且快速。

此外,您可以一次执行 (在搜索时)!


什么是

cli工具要清空(删除所有对象和版本/删除标记)Amazon S3存储桶(AWS)。 桶本身也可以通过选项删除。

此工具允许您搜索存储桶名并删除或空多个存储桶


源代码

以GO语言实现。请参阅GitHub


特征

删除存储桶选项

最初,该工具旨在“清空水桶”,但是由于我要遇到麻烦,所以我还添加了一个选项(-f|--force “也删除了桶”

搜索存储桶名并删除多个存储桶

如下所述,您可以搜索存储桶名称并一次删除或空多个存储桶。

跨区域

在删除多个存储桶时,即使它们在多个区域中,您也可以一次删除它们。

版本控制

即使打开了版本控制,也可以像将其关闭一样将其清空。因此,您可以在不知道版本设置的情况下使用

可以删除的对象数量

CLI和SDK提供的Delete-Objects API具有的限制。数字没有限制

并行处理

当有1000多个对象版本时,在并行处理中执行对象删除

如上所述,最多可以使用SDK的1 API立即删除1,000个对象,因此并行执行每个单元。

因此,它很快。

作为测试,我准备了两个用相同10,000个对象(非常小的对象)的水桶,并尝试使用控制台上的“空”按钮和我创建的工具删除它们(本地环境/逻辑CPU Core Count 8)该工具分别在控制台和8秒的时间内花了22秒。 比控制台快3倍

此外,使用 1000万个对象(包括版本和删除标记),删除在中完成了约100分钟。 (这取决于操作环境,所以我无法保证。)

重试503错误

当有数万个对象时,在极少数情况下,使用CLI或SDK一次删除它们时,S3 API侧可能会出现降低错误(503误差)。

发生这种情况时,CLS3通过添加了等待几秒钟并自动重试的机制来做出响应。


安装

自制

brew install go-to-k/tap/cls3

二进制

来源构建(开发版)

需要GO环境。

git clone https://github.com/go-to-k/cls3.git
cd cls3
make install

如何使用

cls3 -b <bucketName> [-b <bucketName>] [-p <profile>] [-r <region>] [-f|--force] [-i|--interactive]

选项

  • -b, - - bucketname:可选
    • 存储桶名
    • 必须在不是交互式模式
    • 中指定
    • 否则(因此在交互式模式下),您不能指定此!
    • 是可能的。
    • cls3 -b test1 -b test2
  • -p, - profile:可选
    • AWS个人资料名称
  • -r, - 区域:可选(默认:ap-northeast-1
    • AWS地区
    • 没有必要意识到这一点,因为可以在各个地区使用
  • -f,-force:可选
    • forcemode(一起删除水桶)
  • -i, - 交互式:可选
    • 桶选择的交互式模式

交互式模式

bucketName选择

在交互式模式(-i选项)中,您可以搜索存储桶名称并选择“存储桶”。

它被设计为可搜索和可删除的区域 ,因此可以使用而不是区域意识

可以是空的

❯ cls3 -i
Filter a keyword of bucket names: test-goto

然后您在UI中选择“存储桶”名称。

? Select buckets.
  [Use arrows to move, space to select, <right> to all, <left> to none, type to filter]
> [x]  test-goto-bucket-1
  [ ]  test-goto-bucket-2
  [x]  test-goto-bucket-3

最后

我创建了一个CLI工具,用于快速删除和S3存储桶的排空。

如果您喜欢!

可以使用它