【问题标题】:Uploading files to Azure using SAS使用 SAS 将文件上传到 Azure
【发布时间】:2021-12-14 19:36:22
【问题描述】:

我有几个关于使用 Python 上传到 SAS 的问题。我有一个客户提供的 SAS,格式如下:

https://<company_name>.blob.core.windows.net/<container_name>?sp<long_string>

我尝试遵循以下代码:Uploading csv files to azure container using SAS URI in python?

from azure.storage.blob import BlobClient

upload_file_path="d:\\a11.csv"
sas_url="https://xxx.blob.core.windows.net/test5/a11.csv?sastoken"

client = BlobClient.from_blob_url(sas_url)

with open(upload_file_path,'rb') as data:
    client.upload_blob(data)

print("**file uploaded**")

我收到以下错误:

azure.core.exceptions.ResourceExistsError: Public access is not permitted on this storage account.
RequestId:946bd6ea-e01e-0040-3932-ee6a4e000000
Time:2021-12-11T01:58:51.0010075Z
ErrorCode:PublicAccessNotPermitted

Azure SDK 提到使用我没有的帐户名,所以这是不行的(我可以使用 Azure 存储资源管理器上传文件,但这对于我的需要来说很慢,但我知道 SAS 正在工作)。我是否使用了错误的代码进行上传?另外,不清楚如何告诉代码将文件上传到 blob 容器中的哪个位置?例如。如果我想将文件image.jpg 上传到2021-12-11/dataset_1/,我应该把它放在代码的什么地方?

【问题讨论】:

  • 很明显,azure 需要某种凭据才能访问此帐户。
  • 正确,这就是 SAS,但是我不确定如何在 Python 中使用它...
  • 似乎已禁用通过 SAS 令牌访问存储帐户。请看这个链接:docs.microsoft.com/en-gb/azure/storage/common/….

标签: python azure


【解决方案1】:

我尝试使用从容器生成的 SAS URL 上传文件,但无法上传文件。 不要使用容器的 SAS URL,而是使用您的存储帐户 SAS URL,这对我来说可以使用您提供的相同代码。

  • 要为存储帐户生成 SAS URL,请执行以下步骤:

  • 添加了存储帐户的 SAS URL 并运行以下cmd 以下是输出截图:

有关更多信息,请参阅此MS DOC &&Github 示例

【讨论】:

    猜你喜欢
    • 2019-11-19
    • 2020-12-09
    • 1970-01-01
    • 2023-03-08
    • 2016-10-07
    • 2017-08-17
    • 2016-11-17
    • 2014-07-13
    • 2017-07-10
    相关资源
    最近更新 更多