前面我们做过一版清理删除的脚本。
但是 发现 针对启用了版本控制的桶是不生效的,不能永久删除,只是在版本控制中加上了一个删除标记的版本。
如果要永久删除就需要带version_id指定删除。
boto3中提供了ObjectVersion实体
使用脚本如下:
import boto3
import time
import datetime
from aws_money.settings import config
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html
s3 = boto3.resource('s3', region_name='cn-xxxxx-1')
def delete_file_from_bucket_one(bucket_name, prefix, reserve_paths,time_interval):
bucket = s3.Bucket(bucket_name)
if prefix:
print(f"获取前缀为{prefix}的文件")
object_versions = bucket.object_versions.filter(Prefix=prefix)
else:
print("没有前缀筛选,默认获取全部文件")
object_versions = bucket.object_versions.all()
prefixs=str(prefix).replace("/","_")
times=time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
filename=f"{bucket_name}_{prefixs}_{