以下是一个使用Python和boto3库的示例代码,可以用于清理AWS S3存储桶,但保留特定数量的文件夹。
import boto3
def clean_s3_bucket(bucket_name, num_folders_to_keep):
# 创建S3客户端
s3 = boto3.client('s3')
# 获取指定存储桶下的所有对象
response = s3.list_objects_v2(Bucket=bucket_name)
objects = response['Contents']
# 按照最后修改日期对对象进行排序
objects.sort(key=lambda obj: obj['LastModified'])
# 删除多余的文件夹,但保留指定数量的文件夹
num_folders_deleted = 0
for obj in objects:
key = obj['Key']
if key.endswith('/'): # 如果是文件夹
num_folders_deleted += 1
if num_folders_deleted > num_folders_to_keep:
s3.delete_object(Bucket=bucket_name, Key=key)
else: # 如果是文件
# 执行其他清理操作,或者保留指定数量的文件
# 示例用法
bucket_name = 'your-bucket-name'
num_folders_to_keep = 5
clean_s3_bucket(bucket_name, num_folders_to_keep)
上述代码首先创建了一个S3客户端,然后使用list_objects_v2
方法获取存储桶下的所有对象。接下来,对对象列表按照最后修改日期进行排序,并逐个判断是否为文件夹。如果是文件夹,则删除多余的文件夹,但保留指定数量的文件夹。如果是文件,可以执行其他清理操作,或者保留指定数量的文件。
请注意,此代码示例仅适用于清理存储桶中的文件夹和文件,并不包括清理存储桶中的其他资源,如存储桶策略、访问控制列表等。如有需要,请根据具体情况进行扩展。
下一篇:AWS S3存储桶启用MFA