Не удалось найти серверную часть 'storages.backends.s3boto3.S3StaticStorage'
При развертывании моего приложения Django оно просто (похоже) перестало подключаться к моей корзине S3. Полное сообщение, которое я получаю при запуске collectstatic, выглядит следующим образом:
Traceback (most recent call last):
File "/home/ubuntu/campmanager/manage.py", line 22, in <module>
main()
File "/home/ubuntu/campmanager/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
utility.execute()
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/core/management/__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/core/management/base.py", line 416, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/core/management/base.py", line 460, in execute
output = self.handle(*args, **options)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 184, in handle
if self.is_local_storage() and self.storage.location:
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 245, in is_local_storage
return isinstance(self.storage, FileSystemStorage)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/functional.py", line 280, in __getattribute__
value = super().__getattribute__(name)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/functional.py", line 251, in inner
self._setup()
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/contrib/staticfiles/storage.py", line 542, in _setup
self._wrapped = storages[STATICFILES_STORAGE_ALIAS]
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/core/files/storage/handler.py", line 34, in __getitem__
storage = self.create_storage(params)
File "/home/ubuntu/.local/lib/python3.10/site-packages/django/core/files/storage/handler.py", line 45, in create_storage
raise InvalidStorageError(f"Could not find backend {backend!r}: {e}") from e
django.core.files.storage.handler.InvalidStorageError: Could not find backend 'storages.backends.s3boto3.S3StaticStorage': Module "storages.backends.s3boto3" does not define a "S3StaticStorage" attribute/class
Это моя настройка в settings.py
STATIC_ROOT = os.path.join(CORE_DIR, 'staticfiles')
STATIC_URL = 'static/'
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_DEFAULT_ACL = 'public-read'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_MEDIA_LOCATION = 'media-dev'
MEDIA_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_MEDIA_LOCATION)
S3_URL = 'https://%s/' % (AWS_S3_CUSTOM_DOMAIN)
STORAGES = {
"default": {
"BACKEND" : "storages.backends.s3boto3.S3StaticStorage",
},
"staticfiles": {
"BACKEND" : "storages.backends.s3boto3.S3StaticStorage",
},
}
Я пробовал удалять и переустанавливать django-storages, boto3 и botocore без изменений, в надежде, что это решит проблему. Без изменений.
Поскольку я могу использовать корзину в процессе разработки (для медиафайлов), это логически должно быть связано с моими настройками staticfile. Но я не могу понять, в чем проблема. Возможно, кто-то другой мог бы мне помочь?
В итоге я перестроил проект Django с нуля. Что-то в файлах хранилища было повреждено, и я не смог выяснить, что именно. В итоге так выглядели ХРАНИЛИЩА.
AWS_LOCATION = 'static'
STATICFILES_DIRS = (os.path.join(CORE_DIR, 'static'),)
STATIC_ROOT='https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STORAGES = {
"default": {
"BACKEND" : "storages.backends.s3boto3.S3StaticStorage",
},
"staticfiles": {
"BACKEND" : "storages.backends.s3boto3.S3StaticStorage"
},
}