就像在S3-Bucket/Management/Lifecycles using prefixes中一样,我想修剪带有某些单词的旧文件。
我要删除以Screenshot
开头或文件名中有screencast
且早于365天的文件。
/Screenshot 2017-03-19 10.11.12.png
folder1/Screenshot 2019-03-01 14.31.55.png
folder2/sub_folder/project-screencast.mp4
我目前正在测试生命周期前缀是否也适用于文件。
答案 0 :(得分:1)
我认为您不能将生命周期规则与通配符(例如*screencast*
)一起应用,而只能使用诸如“ taxes /”或“ taxes / 2010”之类的前缀。
对于您的情况,我可能会编写一个脚本(或也许是Athena查询)来为符合您的姓名/年龄条件的文件过滤S3 Inventory报告,然后修剪它们。
当然,您可以编写程序来执行此操作,如@John Rotenstein所建议。一次可能不理想的情况是,如果您拥有数百万或数十亿个对象,因为枚举对象列表的时间将很长。但是,对于一定数量的对象来说就可以了。
答案 1 :(得分:0)
您可以编写一个程序来执行此操作,例如以下Python脚本:
import boto3
s3 = boto3.client('s3', region_name='ap-southeast-2')
response = s3.list_objects_v2(Bucket='my-bucket')
keys_to_delete = [{'Key': object['Key']}
for object in response['Contents']
if object['LastModified'] < datetime(2018, 3, 20)
and ('Screenshot' in object['Key'] or 'screencast' in object['Key'])
]
s3.delete_objects(Bucket='my-bucket', Delete={'Objects': keys_to_delete})
您可以将其修改为“一年前”,而不是特定的日期。