首页 > 解决方案 > 如何使用 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'})

以上是我用来上传对象的代码。

标签: pythonamazon-web-servicesamazon-s3

解决方案


你在这里有很多选择。一些想法:

  • 您可以使用Amazon S3 对象生命周期管理在给定时间段内自动删除文件。请参阅:如何为 S3 存储桶创建生命周期策略?
  • 如果您的要求更详细(例如,不同时间段后的不同文件),您可以为每个对象添加一个标签,指定您希望何时删除该对象,或者应该在多少天后删除它。然后,您可以定义Amazon CloudWatch Events 规则以定期触发 AWS Lambda 函数(例如,每天一次或每小时一次)。然后,您可以编写 Lambda 函数来查看对象上的标签,确定是否应该删除它们并删除所需的对象。您可以在 Internet 上找到这方面的示例,通常称为Stopinator
  • 如果您的Amazon EC2 实例一直在运行以进行其他工作,那么您可以简单地创建一个 cron 作业或计划任务来运行类似的程序(不使用 AWS Lambda)。

推荐阅读