Проблема удаления объектов S3 с использованием python и boto3 - PullRequest
0 голосов
/ 07 февраля 2019

Я работаю над удалением ненужных файлов из корзины 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.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Кажется, оригинальный код работал - но AWS S3 потребовалось некоторое время, чтобы на самом деле сделать удаление - я не могу интерпретировать то, что вижу, другим способом.Файлы, которые я хотел уйти, теперь исчезли.

0 голосов
/ 07 февраля 2019

Не item_obj = s3.Object(obj.bucket_name, obj.key) не создает новый объект?То есть вы не удаляете оригинал, а просто копируете и удаляете копию?

Вкл. .object() из: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html

Подресурсы - это методы, которые создают новый экземплярдетского ресурса.Идентификаторы этого ресурса передаются потомку.Для получения дополнительной информации о подресурсах см. Руководство по ознакомлению с ресурсами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...