Загрузить изображение на S3 Python - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь загрузить изображение на 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?Если кто-нибудь может мне помочь, я был бы очень признателен.

Спасибо!

1 Ответ

0 голосов
/ 26 мая 2018

Просто используйте:

import boto3

client = boto3.client('s3', region_name='us-west-2')

client.upload_file('images/image_0.jpg', 'mybucket', 'image_0.jpg')

Старайтесь не вводить свои учетные данные в коде.Вместо этого:

  • Если вы запускаете код из экземпляра Amazon EC2, просто назначьте IAM Role экземпляру с соответствующими разрешениями.Учетные данные будут использоваться автоматически.
  • Если вы запускаете код на своем компьютере, используйте команду Интерфейс командной строки AWS (CLI) *1012* aws configure, чтобы сохранить свои учетные данные вфайл, который будет автоматически использоваться вашим кодом.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...