【问题标题】:Django can upload to S3 but not Get from S3Django 可以上传到 S3 但不能从 S3 获取
【发布时间】:2020-07-22 05:11:57
【问题描述】:

我已将 django 配置为使用 s3 来保存媒体文件。我可以从应用程序上传文件并将它们存储在 s3 上,但是如果我尝试查看这些媒体文件,我会收到此错误。

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>

我知道 GET 请求已启用,因为我可以使用 Postman 使用相同的凭据获取图像。所以我不完全确定出了什么问题。

STATIC_ROOT = os.path.join(BASE_DIR, '/staticfiles/')
STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, '/image_library/')
MEDIA_URL = '/media/'

AWS_ACCESS_KEY_ID = 'PLACEHOLDER'

AWS_SECRET_ACCESS_KEY = 'PLACEHOLDER'

AWS_STORAGE_BUCKET_NAME = 'childcaredevapp'

AWS_DEFAULT_ACL = None

AWS_S3_FILE_OVERWRITE = False

AWS_S3_SIGNATURE_VERSION = "s3v4"

AWS_S3_REGION_NAME = 'eu-central-1'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

【问题讨论】:

    标签: django amazon-s3 boto3 python-django-storages


    【解决方案1】:

    所以...长话短说,我通过删除AWS_S3_SIGNATURE_VERSION = "s3v4" 行来创建正确的签名。看起来他们出于某种原因不匹配。

    【讨论】:

      【解决方案2】:

      我遇到了这个错误,我通过添加 AWS_S3_ADDRESSING_STYLE 变量来解决它:

      AWS_S3_ADDRESSING_STYLE = "virtual"
      

      【讨论】:

        猜你喜欢
        • 2021-02-08
        • 2018-08-24
        • 2017-06-28
        • 1970-01-01
        • 2012-03-14
        • 2016-03-31
        • 2020-10-12
        • 2015-05-30
        • 1970-01-01
        相关资源
        最近更新 更多