使用客户端凭据在Python中从Azure下载Blob

k4emjkb1  于 2023-08-07  发布在  Python
关注(0)|答案(1)|浏览(118)

我正在尝试的是相当简单的。但是,我每次都收到未授权错误。

  • 我有一个Azure容器,其中包含一些文件
  • 我有一个具有客户端凭据的Azure AD帐户
  • 尝试使用下面的Python代码下载Blob并获得Not Authorized错误。我做错了什么?
from azure.storage.blob import BlobServiceClient
from azure.identity import ClientSecretCredential

clientId="xxxxx"
clientSecret="xxxxx"
tenantId="xxxxx"
containerName="xxxxx"
account_url="https://xxxxx.blob.core.windows.net"

containerName="xxxxx"
blobName="xxxxx.txt"

token_credential=ClientSecretCredential(tenant_id=tenantId, client_id=clientId,  client_secret=clientSecret)
blob_service_client=BlobServiceClient(account_url=account_url, credential=token_credential)

blob_client=blob_service_client.get_blob_client(container=containerName, blob=blobName)

downloader=blob_client.download_blob()

字符串
有没有一个get_token我需要调用的地方,我错过了?用户在Azure存储帐户中具有以下访问权限:

  • 存储Blob数据贡献者
  • 存储Blob数据读取器

我做错了什么?

pgccezyw

pgccezyw1#

我看不出你的代码有什么问题。
你可以试试
token_credential.get_token(“https://storage.azure.com/.default“)
如果成功获取token,则可能是您的服务主体没有权限。或者您可能使用了不正确的tenant_id/client_id/client_secret值。
(我在微软的Azure SDK团队工作)

相关问题