SignatureDoesNotMatch при вызове PutObject с Django, Django-Storage, AWS S3, boto3

Я создал Django App и разместил его на Heroku, где я указал все параметры настройки, такие как ID ключа доступа (см. файл Settings).

AWS_ACCESS_KEY_ID= config("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY_ID= config("AWS_SECRET_ACCESS_KEY_ID")
AWS_STORAGE_BUCKET_NAME= config("AWS_STORAGE_BUCKET_NAME")
AWS_S3_CUSTOM_DOMAIN=f"{AWS_STORAGE_BUCKET_NAME}.s3.us-west-1.amazonaws.com"   
AWS_DEFAULT_ACL="public-read" 
AWS_S3_OBJECT_PARAMETERS = {"CacheControl": "max-age=86400" }
    
AWS_LOCATION= "static"  
AWS_S3_REGION_NAME = "EU-west-1" AWS_QUERYSTRING_AUTH=False
AWS_HEADERS={"Access-Control-Allow-Origin":"*", }
DEFAULT_FILE_STORAGE= "storages.backends.s3boto3.S3Boto3Storage"
STATICFILES_STORAGE= "storages.backends.s3boto3.S3StaticStorage"
STATIC_URL= f"HTTPS://{AWS_S3_CUSTOM_DOMAIN}/static/" 
MEDIA_URL=f"HTTPS://{AWS_S3_CUSTOM_DOMAIN}/media/"
DEBUG_PROPAGATE_EXCEPTIONS = True
ASSETS_ROOT = os.getenv('ASSETS_ROOT',"https://{AWS_S3_CUSTOM_DOMAIN}/static/assets") 
     
LOGGING={
         "version":1, 
         "disable_existing_loggers": False,
         "formatters":{
             "verbose":{
                 "format":"[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
                 "datefmt":"%d/%b/%Y %H:%M:%S"
             },
             "simple":{
                 "format": " %(levelname)s  %(message)s",
             }
         },
         "handlers":{
             "console":{
                 "level": "DEBUG",
                 "class": "logging.StreamHandler",
             },
         },
         "loggers":{
            "myapp":{
                 "handlers": ["console"],
                "level": "DEBUG"
             }
       } }

Соответствующие требования:

django-storages==1.12.3    
boto3==1.26.31  

У кого-нибудь есть идеи, как это решить?

Я пробовал IAM пользователя с полным доступом, только S3 полный доступ, ключи доступа глобальной учетной записи и я просто продолжаю получать ошибку: "botocore.exceptions.ClientError: Произошла ошибка (SignatureDoesNotMatch) при выполнении операции PutObject: Вычисленная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте ваш ключ и метод подписи." при попытке загрузить что-либо в S3. Затем веб-сайт выдает:

Internal Server Error

The server encountered an unexpected internal server error

(generated by the waitress)

Логгер, который я добавил в файл настроек Django, совсем не помогает, поскольку он просто показывает мне ошибку SignatureDoesNotMatch.

Я пробовал ключи доступа с + и без, так как это может быть источником ошибки. Я не смог найти никаких лучших практик о том, как вставлять ключи в настройки Heroku, но многие пользователи сообщают об ошибках при копировании ключей с сайта AWS. Я проверил это с помощью CSV-файла и вывода веб-сайта.

Я попытался добавить изображения через страницу администратора на случай, если моя HTML-страница неисправна. Та же ошибка. The

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1277.0.min.js"></script>

строка добавляется и в HTML-страницу. И я сохраняю ее через

form.save()

на моей HTML-странице.

Вернуться на верх