簡體   English   中英

無法通過 Django 從 aws S3 存儲桶訪問上傳的圖像

[英]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.

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