Файлы изображений были удалены сами по себе в AWS-S3

Я использую фреймворк python Django для сервера и AWS-S3 для хранения загруженных изображений. Также я использую библиотеку django-storages для работы с S3. Но иногда изображения удалялись сами по себе, а не через сервер django. Урлы изображений все еще существовали в БД. Поэтому я изменил действия create, put, delete, get на get в политике bucket. Но все равно изображения удалялись сами по себе.

настройка django-storages в settings.py такова

AWS_SECRET_ACCESS_KEY = S3['secret_key']
AWS_REGION = 'ap-northeast-2'
AWS_STORAGE_BUCKET_NAME = 'loopusimage'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (
    AWS_STORAGE_BUCKET_NAME, AWS_REGION)
AWS_DEFAULT_ACL = None
DATA_UPLOAD_MAX_MEMORY_SIZE = 1024000000
FILE_UPLOAD_MAX_MEMORY_SIZE = 1024000000
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage

и измененная политика ведра такова

    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::loopusimage/*"
        }
    ]
}

Что я должен сделать, чтобы решить свою проблему?

AWS сама никогда не удалит элементы в S3, но есть некоторые сценарии, которые могут быть применимы к вашей проблеме.

  1. Вы установили жизненный цикл для элементов в вашем ведре. Вы можете проверить AWS doc, чтобы узнать, как отключить/отменить это.
  2. .
  3. Вторая проблема может заключаться в том, как вы храните изображения в своих моделях. Возможно, вы задали имена неправильным образом, что приводит к тому, что изображения перекрывают друг друга в S3. Я настоятельно рекомендую проверить этот doc, чтобы определить, где сохранять файлы.

Чтобы найти точную проблему, вы можете использовать AWS CloudTrail. Этот сервис поможет вам узнать, кто (или что) удалил эти изображения из вашего ведра. Вы можете ознакомиться с этой инструкцией doc.

Вернуться на верх