【发布时间】: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/….