gpt4 book ai didi

python - 将图像上传到S3 python

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:56 24 4
gpt4 key购买 nike

我正在尝试通过 Python 将图像上传到 S3。我的代码如下所示:

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 之外,还有其他方法可以解决这个问题吗?如果有人能帮助我,我将不胜感激。

谢谢!

最佳答案

只需使用:

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 角色 分配给具有适当权限的实例即可。凭据将自动使用。
  • 如果您在自己的计算机上运行代码,请使用 AWS Command-Line Interface (CLI) aws configure 命令将您的凭据存储在一个文件中,您的代码将自动使用该文件。

关于python - 将图像上传到S3 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com