Я не могу создать соединение S3 в своей среде django через промежуточное ПО django-s3-storages (я получаю ответ 403 от S3).
Boto, похоже, не может подобрать настройки среды, и я подозреваю, что причина в этом (обратная трассировка мало помогает). В качестве диагноза в manage.py shell
:
import boto
boto.connect_s3()
>>> boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials
from django.conf import settings
boto.connect_s3(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
>>> S3Connection:s3.amazonaws.com
Документы (и другие сообщения) указывают, что эти настройки должны работать:
MEDIAFILES_LOCATION = 'media'
AWS_S3_CUSTOM_DOMAIN = 'my-bucket.s3-website-eu-west-1.amazonaws.com'
AWS_S3_HOST = 's3-website-eu-west-1.amazonaws.com'
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
DEFAULT_FILE_STORAGE = 'django_s3_storage.storage.StaticS3Storage'
#S3 settings from https://github.com/etianen/django-s3-storage
AWS_ACCESS_KEY_ID = "xxx"
AWS_SECRET_ACCESS_KEY = "yyy"
AWS_S3_BUCKET_NAME = "my-bucket"
AWS_S3_CALLING_FORMAT = "boto.s3.connection.OrdinaryCallingFormat"
# Make user uploaded files public
AWS_S3_BUCKET_AUTH = False
AWS_S3_MAX_AGE_SECONDS = 60*60*24*365 # 1 year
AWS_S3_GZIP = True
Почему boto не может подключиться?
S3Storage
. Этот класс знает оsettings.py
django и будет использоватьsettings.AWS_ACCESS_KEY_ID
иsettings.AWS_SECRET_ACCESS_KEY
, если они настроены.boto3
сам по себе ничего не знает о файле настроек django, поэтому он не использует ничего, что вы настраиваете в этом файле. Вот почему вы должны указать ключ и секрет дляboto3
при попытке установить соединение S3. - person wkl   schedule 30.12.2016