Предоставленный вами механизм авторизации не поддерживается. Используйте AWS4-HMA C -SHA256 с Django Angular - PullRequest
1 голос
/ 17 июня 2020

Я использую Django как серверную часть, чтобы возвращать API на стороне Angular внешнего интерфейса. Я использовал AWS S3 для хранения мультимедиа. URL-адрес создается с использованием URL-адреса s3 и может загружать файлы в корзину S3. Проблема заключается в том, что содержимое изображения получает сообщение 400 Bad Request. Ниже приведен мой код:

AWS_ACCESS_KEY_ID = "XXXXXXXXXXXXXXXXXX"
AWS_SECRET_ACCESS_KEY = "XXXXXXXXXXXXXXXXXXX"
AWS_STORAGE_BUCKET_NAME = "app"

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
#AWS_QUERYSTRING_AUTH=False

, когда я раскомментирую # AWS_QUERYSTRING_AUTH = False и делаю все изображения s3 как publi c, а затем могу получить доступ к изображению в Интернете, необходимо явно сделать изображение publi c, чего я не хочу. после комментария получение URL-адреса, например -

https://famesta-app.s3.ap-south-1.amazonaws.com/user_30/profile/download.png?AWSAccessKeyId=XXXXXXXXXXXXXXXX&Signature=XXXXXXXXXXXXXXXXXXXx%3D&Expires=1592369615

Ошибка:

<Error>
    <Code>InvalidRequest</Code>
    <Message>The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.</Message>
    <RequestId>20DF944878611</RequestId>
    <HostId>sZPyWKvGHSRt7ANyDlOUh71/xUV14H0avAjaERfkoQxiq0=</HostId>
</Error>

Мой регион: Азиатско-Тихоокеанский регион c (Мумбаи)

AWS Конфигурация-

Конфигурация CORS

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

И в разрешении S3 я разрешил доступ Publi c. Если я сделаю целое ведро как publi c и AWS_QUERYSTRING_AUTH = False, тогда я смогу загрузить изображение и получить доступ в Интернет ко всему, что я хотел, но я не думаю, что это безопасно сделать саму корзину publi c. Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 18 июня 2020
• 1000 пара как
AWS_S3_REGION_NAME = 'ap-south-1' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...