【问题标题】:Azure storage container API request authentication failing with Django appAzure 存储容器 API 请求身份验证失败,使用 Django 应用程序
【发布时间】:2015-08-28 03:16:05
【问题描述】:

我正在尝试将我的 django 应用程序的静态文件同步到 Azure 存储。在运行manage.py collectstatic 命令时尝试将静态文件写入存储容器时出现错误。

我收到错误消息。在 HTTP 请求中找到的 MAC 签名与任何计算的签名都不相同。

此错误的常见原因是两台服务器上的时间签名不匹配,但这不是我的问题。

我正在使用 django 包 django-azure-storageazure-sdk-for-python 来格式化请求。

Here is a gist 尝试连接到 Azure 存储容器时生成的 http 请求和响应。

这些输出看起来有什么问题吗?

【问题讨论】:

  • 你能分享你的代码吗?我倾向于认为该错误与内容类型请求标头有关。
  • 代码可以在上面链接的 django-azure-storage repo 中找到。

标签: python django azure azure-storage


【解决方案1】:

我已经按照您的描述下载了 django 包和 Azure SDK。我编写了一个示例来重现此问题,但它在我这边工作正常。以下是我已完成的步骤: 设置环境:Python 2.7 和 Azure SDK(0.10.0)。

1.尝试使用 django-azure-storage 由于这是我第一次使用它,我没有成功地将它导入到我的项目中,这非常令人沮丧。通常,我利用Azure Python SDK directly。这次我将 storage.py 复制为我的项目中的AzureStorage 类。

#need import django contentfile type
from django.core.files.base import ContentFile

#import the AzureStorage Class form my project
from DjangoWP.AzureStorage import AzureStorage
# my local image path
file_path="local.png";
# my Azure storage blob file

def djangorplugin():
    azurestorage=AzureStorage(myaccount, mykey,"mycontainer")

    stream=open(file_path, 'rb')    
    data = stream.read()
    #need convert file to ContentFile
    azurestorage.save("Testfile1.png",ContentFile(data))

2.很多人想知道如何直接使用Azure SDK for Python,下面的代码sn-p供大家参考:

from azure.storage.blobservice import BlobService
#my local image path
file_path="local.png";   
def upload():
    blob_service = BlobService(account_name=myaccount, account_key=mykey)   
    stream=open(file_path, 'rb')    
    data = stream.read()
    blob_service.put_blob("mycontainer","local.png",data,"BlockBlob")

如果您还有任何疑问,请随时告诉我们。

【讨论】:

    【解决方案2】:

    我错误地使用设置 DEFAULT_FILE_STORAGE 而不是 STATICFILES_STORAGE 来覆盖同步静态文件时使用的存储后端。更改此设置可解决此问题。

    我在尝试使用 django-storages 时也遇到了问题,它指定在其文档中使用 DEFAULT_FILE_STORAGE 设置。但是,在这个包中使用 STATICFILES_STORAGE 也解决了我遇到的问题。

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2020-05-06
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2022-10-17
      • 2015-08-03
      • 1970-01-01
      • 2020-08-06
      相关资源
      最近更新 更多