如何中止存储桶的所有不完整的分段上传

Ref*_*ann 11 amazon-s3 aws-cli jq

有时,分段上传会因某种原因挂起或无法完成.在这种情况下,你会遇到难以移除的孤立部分.您可以列出以下内容:

aws s3api list-multipart-uploads --bucket $BUCKETNAME
Run Code Online (Sandbox Code Playgroud)

我正在寻找让他们全部中止的方法.

Ref*_*ann 14

假设您拥有awscli所有设置并且它将输出JSON,您可以使用以下jq方式投影所需的键:

BUCKETNAME=<xxx>
aws s3api list-multipart-uploads --bucket $BUCKETNAME \
| jq -r '.Uploads[] | "--key \"\(.Key)\" --upload-id \(.UploadId)"' \
| while read -r line; do
    eval "aws s3api abort-multipart-upload --bucket $BUCKETNAME $line";
done
Run Code Online (Sandbox Code Playgroud)


Riz*_*Riz 7

如果要分段上传,则也可以执行S3管理控制台的清理表单。

a)打开您的S3存储桶

b)切换到管理选项卡

c)单击添加生命周期规则

d)现在,在第一步中输入规则名称,然后选中清理不完整的分段上传复选框。现在,您也输入保留不完整零件的天数。

而已。您也可以在所附的屏幕截图中看到这些步骤。

添加规则的步骤


koo*_*d17 5

您也可以使用Minio Client aka mc它是开源的并且与 AWS S3 兼容。

列出关联存储桶上所有未完成的上传。

$ mc ls -I s3/mybucketname
Run Code Online (Sandbox Code Playgroud)

删除关联 S3 存储桶的所有不完整上传。

$ mc rm -I -r --force s3/mybucketname
Run Code Online (Sandbox Code Playgroud)

I = 不完整 r = 递归 f = 带强制选项

希望能帮助到你。

免责声明:我为Minio工作。


小智 5

这是我的 oneliner,假设您的密钥/文件名中没有任何空格,无论状态如何,它都会中止所有分段上传。

BUCKETNAME=<xxx>;aws s3api list-multipart-uploads --bucket $BUCKETNAME --query 'Uploads[].[Key, UploadId]' --output text | awk  '{print "aws s3api abort-multipart-upload --upload-id "$2" --bucket $BUCKETNAME --key " $1 " & wait"}{}' | bash
Run Code Online (Sandbox Code Playgroud)