web-dev-qa-db-ja.com

boto3を使用してs3バケットを空にする最も速い方法は何ですか?

私はバケットを削除してから再作成することを考えていました(後で気付いた悪いオプション)。

次に、バケットからすべてのオブジェクトを削除するにはどうすればよいですか?

私はこれを試しました: http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.delete_objects

ただし、すべてではなく複数のオブジェクトが削除されます。

バケツを空にする最良の方法は何ですか?

9
Tushar Niras

aws cli を使用するだけです。

aws s3 rm s3://mybucket --recursive

ええと、boto3を使用するように主張した場合、より長い回答を求めます。これにより、削除マーカーがs3に送信されます。フォルダー処理は必要ありません。 bucket.Object.allは1Kに制限されないイテレータを作成します。

import boto3    
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
# suggested by Jordon Philips 
bucket.objects.all().delete()
25
mootmoot

バージョン管理が有効になっている場合、すべてのオブジェクトバージョンを削除するために、他の回答への同様の呼び出しがあります。

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket-name')
bucket.object_versions.delete()
2
kgutwin