Не удается найти правильную конфигурацию медиаресурсов с хранилищами django и Amazon S3 - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь реализовать возможность загрузки изображений в Amazon S3 в моем приложении Django, используя django -хранилища, boto3, whitenoise и подушку. Я следовал этому уроку , а также этому , и хотя я смог успешно загрузить свои статичные c ресурсы для загрузки из S3, я не могу похоже, мое приложение загружается в медиа-папку на S3. Он по-прежнему загружает изображения в локальную среду.

Есть ли что-то, чего мне не хватает в этих конфигурациях, что является причиной этого? Я фокусируюсь на неправильной части проекта?

Мои настройки имеют следующую конфигурацию в соответствии с двумя учебниками:

settings.py

STATIC_URL = '/static/'

AWS_LOCATION = 'static'
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = '<my-bucket>'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
DEFAULT_FILES_STORAGE = '<my-project>.storage_backends.MediaStorage'
STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
STATICFILES_FINDERS = [
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
AWS_DEFAULT_ACL = None

С файлом storage-backends.py в том же каталоге, содержащим следующее:

from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
    location = 'media'
    file_overwrite = False

В models.py есть:

profile_pic = models.ImageField(upload_to='profile_pics/', blank=True)

Что не доставляло мне никаких проблем до того, как я реализовал белый шум для развертывания, но белый шум не очень хорошо работает с локальными файлами, так что это ожидалось.

Я пытался выполнить миграцию, меняя разрешения на ведро, создание нового ведра, сбор данных c, настройка различных конфигураций выше, и до сих пор не повезло ни с чем.

В настоящее время я работаю в локальной среде разработки с Docker, но Я успешно смог заставить ресурсы stati c работать как в локальной среде, так и в промежуточной среде в Heroku.

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