簡體   English   中英

django 存儲 AWS S3 SigVer4:SignatureDoesNotMatch

[英]django storages AWS S3 SigVer4: SignatureDoesNotMatch

我的配置(非常基本):


        settings.py
        AWS_S3_REGION_NAME = 'eu-west-3'
        AWS_S3_FILE_OVERWRITE = False
        # S3_USE_SIGV4 = True # if used, nothing changes
        # AWS_S3_SIGNATURE_VERSION = "s3v4" # if used, nothing changes
        AWS_ACCESS_KEY_ID = "xxx"
        AWS_SECRET_ACCESS_KEY = "xxx"
        AWS_STORAGE_BUCKET_NAME = 'xxx'
        # AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'  # if used, no pre-signed urls
        AWS_DEFAULT_ACL = 'private'
        AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
        AWS_LOCATION = 'xxx'
        DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
        
        INSTALLED_APPS = [
           ...,
           'storages'
        ]
        
        models.py
        class ProcessStep(models.Model):
            icon = models.FileField(upload_to="photos/process_icons/")

我得到什么:

  1. 預簽名的 url 生成(都在icon.url和管理頁面上自動)
  2. 預簽名 url 響應狀態碼 = 403(禁止)
  3. 如果打開, SignatureDoesNotMatch錯誤。 帶文字: The request signature we calculated does not match the signature you provided. Check your key and signing method. The request signature we calculated does not match the signature you provided. Check your key and signing method.

試過:

  • 更改訪問密鑰(根和 IAM)
  • 改變桶區域
  • icon字段創建單獨的存儲 object(相同的錯誤 SignatureDoesNotMatch)
  • 更改 django-storages package 版本(目前使用最新的 1.11.1)

觀點:

  • boto3 客戶端generate_presigned_url返回帶有無效簽名的 url

問題:

  1. 我應該怎么辦?
  2. 為什么我會收到錯誤消息?

耐心是一種美德!

一個人可能要等待 1 天才能讓一切正常工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM