亚马逊S3中删除文件的最快方法

5
使用boto3,可以按如下方式删除存储桶中的文件
for object in bucket.objects.all():
    if 'xyz' in object.key:
        object.delete()

每个文件都需要发送一次REST API调用。如果你有大量的文件,这可能需要很长时间。

是否有更快的方法来完成这个任务?

3个回答

7
最简单的删除文件的方法是使用Amazon S3生命周期规则。只需指定前缀和年龄(例如创建后1天),S3将为您删除文件!但这并不一定是最快的方法--可能需要等待24小时才能执行该规则。
如果确实想要自己删除对象,请使用delete_objects()而不是delete_object()。它可以每次接受多达1000个键,这比逐个删除每个对象更快。

0
AWS控制台现在提供了一个选项,可以选择一个S3存储桶并点击“清空”按钮。这样就可以一次性删除1000个文件(可能在幕后使用delete_objects() API调用),而无需编写脚本或自己调用API。唯一的注意事项是,在过程完成前不能离开页面,否则它将停止进程。如果控制台可行且所涉及的存储桶少于200万个对象,则效果很好。我注意到,在删除200万个对象后,它往往会挂起。

0

Boto提供了MultiDelete的支持。以下是如何使用它的示例:

import boto.s3
conn = boto.s3.connect_to_region('us-east-1')  # or whatever region you want
bucket = conn.get_bucket('mybucket')
keys_to_delete = ['mykey1', 'mykey2', 'mykey3', 'mykey4']
result = bucket.delete_keys(keys_to_delete)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接