【问题标题】:Importing azure blob via SAS in Python在 Python 中通过 SAS 导入 azure blob
【发布时间】:2018-04-05 05:29:38
【问题描述】:

编辑: 我希望通过BLOB-specific SASAzure Storage Container 中的blob 导入到我的Python 脚本中。

from azure.storage.blob import BlobService

sas_service = BlobService(
    account_name = "name",
    sas_token = "mytoken"
)

blob_content = sas_service.get_blob_to_path("container_name", "blob_name")

我尝试过使用它,但它输出了一个OSError,同时列出了一个“503 错误”

【问题讨论】:

  • 那是什么类型的 SAS 令牌?一个账户 SAS?特定于容器的 SAS?另外:“它不起作用”是什么意思?你收到错误信息了吗?现在,正如所写,这个问题还不清楚。请相应地进行编辑。
  • 提示:503 是一个 HTTP 状态码。去谷歌搜索吧
  • 您编辑了问题以提及特定于 blob 的 SAS。那将是您问题的核心。您正在尝试使用与服务级别身份验证无关的 SAS 启动 blob 服务客户端。
  • 能否请您发布更多详细信息,例如错误日志,以便我帮助您解决问题?

标签: python azure azure-storage azure-blob-storage


【解决方案1】:

根据你的描述,你想通过SAS_TOKENaccess azure blob storage

你可以参考下面对我有用的sn-p代码:

from datetime import datetime, timedelta
import requests
from azure.storage.blob import (
    BlockBlobService,
    ContainerPermissions,
)

accountName = "<your_account_name>"
accountKey = "<your_account_key>"
containerName = "<your_container_name>"
blobName = "<your_blob_name>"

def GetSasToken():
    blobService = BlockBlobService(account_name=accountName, account_key=accountKey)
    sas_token = blobService.generate_container_shared_access_signature(containerName,ContainerPermissions.READ, datetime.utcnow() + timedelta(hours=1))
    return sas_token


def AccessTest(token):
    blobService = BlockBlobService(account_name = accountName, account_key = None, sas_token = token)
    blobService.get_blob_to_path(containerName,blobName,"E://test.txt")


token=GetSasToken()
print token
AccessTest(token)

你也可以参考official tutorial的更多细节。

希望对你有所帮助。

【讨论】:

  • 其中 sas_token 是您从门户存储资源管理器(预览版)创建的查询字符串 -> 共享访问签名 -> 查询字符串
  • BlockBlobService 不再是 azure.storage.blob 库的一部分。使用 SAS 令牌将 Blob 上传到容器的新方法是什么?
【解决方案2】:
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 2016-05-29
  • 2019-07-09
相关资源
最近更新 更多