1

我已将 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'
4

2 回答 2

2

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

于 2020-10-14T23:48:18.880 回答
0

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

AWS_S3_ADDRESSING_STYLE = "virtual"
于 2021-02-23T23:03:30.720 回答