在 Amazon S3 中删除文件的最快方法

问题描述 投票:0回答:3

使用 boto3,可以删除存储桶中的文件,如下所示

for object in bucket.objects.all():
    if 'xyz' in object.key:
        object.delete()

这会为每个文件发送一个 REST API 调用。如果您有大量文件,这可能需要很长时间。

有更快的方法吗?

amazon-web-services amazon-s3 delete-file boto3
3个回答
7
投票

删除文件最简单的方法是使用 Amazon S3 生命周期规则。只需指定前缀和期限(例如创建后 1 天),S3 将为您删除文件!

但是,这不一定是最快删除它们的方法——执行规则可能需要 24 小时。

如果你真的想自己删除对象,请使用

delete_objects()
而不是
delete_object()
。每次调用最多可以接受 1000 个键,这比单独删除每个对象要快。


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)

0
投票

AWS 控制台现在可以选择一个 s3 存储桶并单击“清空”按钮。这会一次删除 1000 个文件(可能在幕后使用 delete_objects() api 调用),而无需编写脚本或自己调用 api。唯一需要注意的是,在该过程完成之前,您不能离开该页面,否则将停止该过程。如果控制台是一个选项并且相关存储桶中的对象少于 200 万,则效果很好。我注意到它往往会在 200 万个已删除对象标记之后挂起。

© www.soinside.com 2019 - 2024. All rights reserved.