如何按名称删除 S3 存储桶中的旧文件? [英] How can I delete old files by name in S3 bucket?

查看:36
本文介绍了如何按名称删除 S3 存储桶中的旧文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

很像在 S3-Bucket/Management/Lifecycles 中使用前缀,我想删除有某些单词的旧文件.

Much like in S3-Bucket/Management/Lifecycles using prefixes, I'd like to prune old files that have certain words.

我希望删除以 Screenshot 开头或文件名中包含 screencast 超过 365 天的文件.

I'm looking to remove files that start with Screenshot or has screencast in the filename older than 365 days.

  • /截图 2017-03-19 10.11.12.png
  • folder1/Screenshot 2019-03-01 14.31.55.png
  • folder2/sub_folder/project-screencast.mp4

我目前正在测试生命周期前缀是否也适用于文件.

I'm currently testing if lifecycle prefixes work on files too.

推荐答案

你可以写一个程序来做,比如这个Python脚本:

You can write a program to do it, such as this Python script:

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})

您可以将其修改为1 年前"而不是特定日期.

You could modify it to be "1 year ago" rather than a specific date.

这篇关于如何按名称删除 S3 存储桶中的旧文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆