8

s3 バケット 'test' にディレクトリがあり、このディレクトリを削除したいと考えています。これは私がやっていることです

s3 = boto3.resource('s3')
s3.Object(S3Bucket,'test').delete()

そして、このような応答を得ます

{'ResponseMetadata': {'HTTPStatusCode': 204、'HostId': '************'、'RequestId': '************'}}

しかし、私のディレクトリは削除されていません!

「/test」、「test/」、「/test/」などのすべての組み合わせを試しました。また、そのディレクトリ内のファイルと空のディレクトリを使用して、すべて「test」を削除できませんでした。

4

2 に答える 2

34

delete_objects単一の HTTP リクエストを使用して、バケットから複数のオブジェクトを削除できます。最大 1000 個のキーを指定できます。

https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.delete_objects

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')

objects_to_delete = []
for obj in bucket.objects.filter(Prefix='test/'):
    objects_to_delete.append({'Key': obj.key})

bucket.delete_objects(
    Delete={
        'Objects': objects_to_delete
    }
)
于 2016-09-08T13:55:20.760 に答える