python - 如何使用 python 自动删除 AWS S3 文件?
问题描述
我想在一定时间后从 S3 中删除一些文件。我需要为每个对象而不是桶设置时间限制。那可能吗?
我正在使用 boto3 将文件上传到 S3。
region = "us-east-2"
bucket = os.environ["S3_BUCKET_NAME"]
credentials = {
'aws_access_key_id': os.environ["AWS_ACCESS_KEY"],
'aws_secret_access_key': os.environ["AWS_ACCESS_SECRET_KEY"]
}
client = boto3.client('s3', **credentials)
transfer = S3Transfer(client)
transfer.upload_file(file_name, bucket, folder+file_name,
extra_args={'ACL': 'public-read'})
以上是我用来上传对象的代码。
解决方案
你在这里有很多选择。一些想法:
- 您可以使用Amazon S3 对象生命周期管理在给定时间段内自动删除文件。请参阅:如何为 S3 存储桶创建生命周期策略?
- 如果您的要求更详细(例如,不同时间段后的不同文件),您可以为每个对象添加一个标签,指定您希望何时删除该对象,或者应该在多少天后删除它。然后,您可以定义Amazon CloudWatch Events 规则以定期触发 AWS Lambda 函数(例如,每天一次或每小时一次)。然后,您可以编写 Lambda 函数来查看对象上的标签,确定是否应该删除它们并删除所需的对象。您可以在 Internet 上找到这方面的示例,通常称为Stopinator。
- 如果您的Amazon EC2 实例一直在运行以进行其他工作,那么您可以简单地创建一个 cron 作业或计划任务来运行类似的程序(不使用 AWS Lambda)。
推荐阅读
- python - 处理 selenium 项目时出错
- r - 关于 R ggplot2 无法在 for 循环中绘制正确的图形
- c# - 为什么 RestSharp 返回 text/html 而不是 json?
- arrays - 在 google colab Python 上使用大型数组
- typescript - 打字稿中的对象迭代
- typescript - TypeScript中的后缀双感叹号
- php - 条纹不同价格订阅
- vbscript - 如何执行VBS?
- javascript - inDesign 脚本 - 从“排版脚本”TextFrame 剪切并粘贴到空 TextFrame
- c - 在 VS Code C/C++ 调试控制台中创建变量