【问题标题】:Uploading images to amazon s3 using boto3 from django使用来自 django 的 boto3 将图像上传到 amazon s3
【发布时间】:2019-04-29 23:50:55
【问题描述】:

导入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)

打印(“完成”)

【问题讨论】:

  • 出现错误:存储桶名称必须匹配正则表达式“^[a-zA-Z0-9.\-_]{1,255}$”
  • 我认为 test-dev-bkt 是您的存储桶名称。不是 s3 的 url
  • 如果我只使用存储桶的名称得到此错误----------您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来的请求发送到此端点

标签: django python-3.x boto3


【解决方案1】:

BUCKET_NAME中的值不正确,根据documentation你的bucket名字是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端点。

【讨论】:

  • 如果我只使用存储桶的名称得到此错误----------您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来的请求发送到此端点
猜你喜欢
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多