[英]Django + AWS S3 Bucket: Authenticated Access to S3 Bucket
[英]Unable to access uploaded image from aws S3 bucket through Django
我已经通过django settings.py文件成功完成了上传图片到s3桶的配置。
这是我的配置:
AWS_ACCESS_KEY_ID = '######################'
AWS_SECRET_ACCESS_KEY = '###########################'
AWS_STORAGE_BUCKET_NAME = 'divytrust-image'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
我在服务器上使用 Nginx+gunicorn。 我成功地将图像上传到 s3bucket/pics 但是当我尝试从 django 管理面板查看图像时,我收到错误:
This XML file does not appear to have any style information associated with it. The
document tree is shown below.
<Error>
<Code>InvalidRequest</Code>
<Message>The authorization mechanism you have provided is not supported. Please use
AWS4-HMAC-SHA256.</Message>
<RequestId>1F51EJV41QT73FSV</RequestId>
<HostId>ZL9W4GqDXDbPluBsX+aC4FvRzVy0CLLjy6mXEPL8U/zAWSFzNi1tAQQixGIhbLgeADS1DV0Mv8c=
</HostId>
我最近遇到了同样的问题。
解决方案是指定要使用的 S3 签名版本,即 v4。 某些地区的旧版 SDK 默认为 v2。 您可能需要先升级 SDK。
来自 Django S3 文档:
AWS_S3_SIGNATURE_VERSION
从 boto3 版本 1.13.21 开始,用于生成预签名 url 的默认签名版本仍然是 v2。 为了能够通过预签名的 url 访问所有区域中的 s3 对象,请将其显式设置为 s3v4。
另请注意,签名版本不向后兼容,这可能会导致遗留项目出现问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.