首页 > 解决方案 > 使用来自 django 的 boto3 将图像上传到 amazon s3

问题描述

导入 boto3

从 botocore.client 导入配置

ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXX'

ACCESS_SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXX'

BUCKET_NAME = ' https://s3.amazonaws.com/test-dev-bkt '

data = open('/home/kuliza270/Desktop/workspace/hdfc-csrm-backend/webapp/statics/img/headerLogoNew.jpg', 'rb')

s3 = boto3.resource('s3',

aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key=ACCESS_SECRET_KEY,
config=Config(signature_version='s3v4')

)

s3.Bucket(BUCKET_NAME).put_object(Key='logo.jpg', Body=data)

打印(“完成”)

标签: djangopython-3.xboto3

解决方案


BUCKET_NAME 中的值不正确,根据文档,您的存储桶名称是 test-dev-bkt:

在路径样式 URL 中,存储桶名称不是域的一部分(除非您使用特定于区域的终端节点)。例如:

US East (N. Virginia) Region endpoint, http://s3.amazonaws.com/bucket

Region-specific endpoint, http://s3-aws-region.amazonaws.com/bucket

在路径样式 URL 中,您使用的终端节点必须与存储桶所在的区域匹配。例如,如果您的存储桶位于南美洲(圣保罗)区域,则必须使用 http://s3-sa-east-1.amazonaws.com/bucket终端节点。如果您的存储桶位于美国东部(弗吉尼亚北部)区域,则必须使用 http://s3.amazonaws.com/bucket终端节点。


推荐阅读