Настройка Django Static_Root CDN для производства

Я использую Cropperjs и Opencv для пользователей, чтобы обрезать изображение, это требует временной загрузки файла в папку static_root или media_root, который удаляется после обрезки. Я использую Amazon S3 для статических файлов, но не знаю, как настроить static_root для использования Amazon S3 в продакшене? Я использую Heroku для производства, если это имеет значение?

STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)

DEFAULT_FILE_STORAGE = "src.cdn.backends.MediaRootS3Boto3Storage" #backends.py
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    BASE_DIR / "static", # os.path.join(BASE_DIR, 'static')
]

STATIC_ROOT = BASE_DIR / "staticfiles-cdn" # CDN for production?
MEDIA_ROOT = BASE_DIR / "staticfiles-cdn" / "uploads"

TEMP = MEDIA_ROOT / "temp"

Согласно документации по хероку:

Django не будет автоматически создавать целевой каталог (STATIC_ROOT) который использует collectstatic, если он недоступен. Вам может понадобиться создать этот каталог в вашей кодовой базе, чтобы он был доступен, когда collectstatic будет запущен. Git не поддерживает пустые каталоги файлов, поэтому вам придется создать файл и внутри этого каталога.

.

Итак, для временного сохранения изображения перед загрузкой в AWS S3 работает следующий макет static_root:

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(STATIC_ROOT, 'uploads')

TEMP = os.path.join(MEDIA_ROOT, 'temp')
Вернуться на верх