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)
如果要分段上传,则也可以执行S3管理控制台的清理表单。
a)打开您的S3存储桶
b)切换到管理选项卡
c)单击添加生命周期规则
d)现在,在第一步中输入规则名称,然后选中清理不完整的分段上传复选框。现在,您也输入保留不完整零件的天数。
而已。您也可以在所附的屏幕截图中看到这些步骤。
您也可以使用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)
| 归档时间: |
|
| 查看次数: |
4803 次 |
| 最近记录: |