Я работаю над удалением ненужных файлов из корзины AWS S3 перед переводом в долговременное хранилище Glacier.Я запускаю следующий сценарий, используя Python
и boto3
:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket(<mybucketname>)
for obj in bucket.objects.all():
if '.DS_S' in obj.key or '.ini' in obj.key:
item_obj = s3.Object(obj.bucket_name, obj.key)
print(obj.key, item_obj.content_length)
del_resp = item_obj.delete()
print("Delete response for", obj.key, "is\n", del_resp)
В соответствии с документацией здесь - метод delete
должен возвращаться с dict 3результаты - но вот пример ответа, который я вижу от одного из вызовов - и это не то, что в документации:
фото камеры / Digi Pics / Camera 06-08/.DS_Store 24580 Удалить ответ для камеры фотографии / Digi Pics / Camera 06-08 / .DS_Store является { 'ResponseMetadata': { 'RequestID': '3B5CA1A9B0766A6B', 'НомерУзла': 'HDWyoQg + RNrRZRC3nvqD8kR4bKDuMkTqDf7a7gGSD0lRUvucg56W76hG0 + VP8BZ04oq + INsQUIY =','HTTPStatusCode': 204, 'HTTPHeaders': { 'х-AMZ-ID-2': 'HDWyoQg + RNrRZRC3nvqD8kR4bKDuMkTqDf7a7gGSD0lRUvucg56W76hG0 + VP8BZ04oq + INsQUIY =', 'X-Amz-Request-ID': '3B5CA1A9B0766A6B', 'дата':'Чт, 07 февраля 2019 г. 16:00:26 GMT', 'server': 'AmazonS3'}, 'RetryAttempts': 0}}
Ответ имеет http-ответ 204- так что, похоже, был в некотором роде успешным - но когда я смотрю в S3 ведра - файл не был удален.Я не получаю никаких кодов ошибок Python.
Есть идеи?