上传图片到s3python

2024-06-20 01:30:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过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)

我收到以下错误消息:

^{pr2}$

此代码基于以下网站的教程: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之外,还有其他方法可以解决这个问题吗?如果有人能帮我,我会非常感激的。在

谢谢你!在


Tags: tokeyfromimportnoneawss3bucket
1条回答
网友
1楼 · 发布于 2024-06-20 01:30:57

只需使用:

import boto3

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

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

尽量避免在代码中放入凭据。取而代之的是:

  • 如果您是从amazonec2实例运行代码,只需向具有适当权限的实例分配IAM角色。将自动使用凭据。在
  • 如果您正在自己的计算机上运行代码,请使用AWS Command-Line Interface (CLI)aws configure命令将凭据存储在一个文件中,该文件将由您的代码自动使用。在

相关问题 更多 >