s3 python脚本批量删除文件夹下全部的文件(删除版本和全部版本)

import boto3

def delete_s3_versions(bucket_name, prefix):
    s3 = boto3.client('s3')
    
    # 获取桶中的所有对象的版本(包括删除标记)
    paginator = s3.get_paginator('list_object_versions')
    pages = paginator.paginate(Bucket=bucket_name, Prefix=prefix)
    
    delete_objects = {'Objects': []}

    for page in pages:
        # 处理对象版本
        if 'Versions' in page:
            for version in page['Versions']:
                delete_objects['Objects'].append({
                    'Key': version['Key'],
                    'VersionId': version['VersionId']
                })
        # 处理删除标记
        if 'DeleteMarkers' in page:
            for marker in page['DeleteMarkers']:
                delete_objects['Objects'].append({
                    'Key': marker['Key'],
                    'VersionId': marker['VersionId']
                })
        
        # 批量删除,最多1000个对象
        if len(delete_objects['Objects']) > 0:
            print(f"Deleting {len(delete_objects['Objects'])} objects/versions...")
            s3.delete_objects(Bucket=bucket_name, Delete=delete_objects)
            delete_objects = {'Objects': []}

    print(f"Completed deletion of all versions and delete markers in {bucket_name}/{prefix}")

if __name__ == "__main__":
    bucket_name = "your-s3-bucket-name"  # 替换为你的 S3 桶名称
    prefix = "your-directory-prefix/"    # 替换为你要清空的目录路径  不带/ 就是删除文件

    delete_s3_versions(bucket_name, prefix)```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鹅i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值