Я пытаюсь загрузить изображение на S3 через Python.Мой код выглядит следующим образом:
import os
from PIL import Image
import boto
from boto.s3.key import Key
def upload_to_s3(aws_access_key_id, aws_secret_access_key, file, bucket, key, callback=None, md5=None, reduced_redundancy=False, content_type=None):
conn = boto.connect_s3(aws_access_key_id, aws_secret_access_key)
bucket = conn.get_bucket(bucket, validate=False)
k = Key(bucket)
k.key = key
k.set_contents_from_file(file)
AWS_ACCESS_KEY = "...."
AWS_ACCESS_SECRET_KEY = "....."
filename = "images/image_0.jpg"
file = Image.open(filename)
key = "image"
bucket = 'images'
upload_to_s3(AWS_ACCESS_KEY, AWS_ACCESS_SECRET_KEY, file, bucket, key)
Я получаю это сообщение об ошибке:
S3ResponseError: S3ResponseError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidRequest</Code><Message> The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.</Message>
<RequestId>90593132BA5E6D6C</RequestId>
<HostId>...</HostId></Error>
Этот код основан на учебнике с этого сайта: http://stackabuse.com/example-upload-a-file-to-aws-s3/
Я пробовал k.set_contents_from_file, а также k.set_contents_from_filename, но оба, похоже, не работают для меня.
Ошибка говорит об использовании AWS4-HMAC-SHA256, но я не уверен, как это сделать.Есть ли другой способ решения этой проблемы, кроме использования AWS4-HMAC-SHA256?Если кто-нибудь может мне помочь, я был бы очень признателен.
Спасибо!