#django #amazon-web-services #amazon-s3
Вопрос:
Вот мои конфигурации S3:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
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 = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_QUERYSTRING_AUTH = False
У меня есть пара моделей с полями изображений, и когда я загружаю изображение, оно правильно загружается в мою корзину S3.
Но я также хочу поместить туда свои статические файлы (JS, CSS). Я вручную создал папку в корневой папке моего хранилища S3 под названием static и загрузил все свои файлы CSS, JS в эту папку с помощью веб-приложения S3.
Однако в моем шаблоне я просто делаю {% статический ‘css/main.css’%}, и файл не загружается.
Я использовал инструмент проверки Chrome, чтобы проверить, какие ресурсы загружаются, и я думаю, что он подключается к моей корзине S3, но приносит файл, который я хочу, пустым, поэтому он по какой-то причине не загружается.
Ответ №1:
Вам придется дважды проверить, настроили ли вы политику корзины в своей корзине S3, разрешающую публичное чтение объектов, а также отключить блокировку общего доступа на вкладке разрешения. По умолчанию ваше хранилище является закрытым без публичного доступа, что означает, что ваше веб-приложение не может его видеть. Если это уже настроено, вам придется проверить и включить CORS, потому что Django пытается получить доступ к вашим статическим файлам из другого домена
Комментарии:
1. Я все это проверил. Я выяснил эту проблему. Всякий раз, когда я загружаю файл, он загружается идеально, но возвращает мне неверный URL-адрес. Он возвращает тот, в котором нет моего региона, когда я добавляю регион, все работает, но как бы я добавил свой регион, чтобы хранилища django обрабатывали его правильно? Я попробовал AWS_S3_REGION_NAME, но это не сработало. Я нахожусь в регионе me-юг-1
2. Я рад, что у вас получилось, по умолчанию AWS использует us-east-1 в качестве названия региона. Поэтому, если он находится в любом другом регионе, кроме этого, вам придется добавить правильный регион.