如何使用 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 存储桶创建生命周期策略?
  • 如果您的需求更详细(例如,不同时间段后的不同文件(,您可以为每个对象添加一个 Tag,指定您希望何时删除该对象,或者在多少天后删除该对象。然后,您可以定义一个Amazon CloudWatch Events 规则,以定期(例如,每天一次或每小时一次(触发 AWS Lambda 函数。然后,您可以对 Lambda 函数进行编码,以查看对象上的标签,确定是否应删除它们并删除所需的对象。你会在互联网上找到这样的例子,通常被称为停止器
  • 如果您的Amazon EC2 实例一直在运行以进行其他工作,那么您只需创建一个 cron 作业或计划任务即可运行类似的程序(无需使用 AWS Lambda(。

最新更新