django - 使用来自 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)
打印(“完成”)
解决方案
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终端节点。
推荐阅读
- javascript - 没有括号的短格式调用方法?
- logging - pod 中的 Kubernetes 日志位置
- asp.net - 更新 API 后 IIS 上出现错误 404
- spring-mvc - 如何在 Spring 组件类中访问 HttpServletRequest
- angular - agm-map 动态显示/更新标记不起作用
- html - Bootstrap 4 img-fluid:如何在轮播中为移动设备上的图像制作一致的高度
- python - 使用 Python 压缩和格式化添加到 Word 文档中的照片
- json.net - Json.Net - 匿名类型的部分反序列化
- javascript - 选择第二个孩子并赋予 ID - Javascript
- dart - Dart:使用 Observatory 查找内存泄漏