如何使用python自动删除AWS S3文件?

时间:2020-01-28 05:41:39

标签: python amazon-web-services amazon-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'})

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

1 个答案:

答案 0 :(得分:1)

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

  • 您可以使用 Amazon S3对象生命周期管理在给定的时间段内自动删除文件。参见:documents
  • 如果您的要求更加详细(例如,不同时间段后的文件不同),则可以为每个对象添加标签,指定您希望何时删除对象或在几天后删除对象它应该被删除。然后,您可以定义 Amazon CloudWatch Events规则以定期(例如每天一次或每小时一次)触发AWS Lambda函数。然后,您可以对Lambda函数进行编码,以查看对象上的标签,确定是否应删除它们并删除所需的对象。您可以在Internet上找到此类示例,通常称为 Stopinator
  • 如果您有一个 Amazon EC2实例一直在运行以进行其他工作,则只需创建一个cron作业或计划任务即可运行类似程序(无需使用AWS Lambda)。