使用 Azure DataLakeServiceClient 下载文件在几分钟成功后得到禁止响应

问题描述 投票:0回答:1

我想使用Python从OneLake下载文件,该文件是在Power BI中上传的。 我有以下代码:

from azure.storage.filedatalake import DataLakeServiceClient
from azure.identity import DefaultAzureCredential

WORKSPACE_NAME = "workspace_2"
DATA_PATH = "DataflowsStagingLakehouse.Lakehouse/Files/logo.png"
account_url = f"https://onelake.dfs.fabric.microsoft.com"

token_credential = DefaultAzureCredential()
service_client = DataLakeServiceClient(account_url, credential=token_credential)
file_system_client = service_client.get_file_system_client(WORKSPACE_NAME)
stream = file_system_client.get_file_client(DATA_PATH).download_file()
data = stream.readall()
with open("tmp.png", "wb") as f:
    f.write(data)
  • 我已在 Azure 门户中创建了名为 Eddie's App 2 的应用程序注册。
  • 我已在 Eddie 的应用程序 2 中创建了客户端机密。
  • 我设置了环境变量 AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET。
  • 我已将 Eddie's App 2 作为查看器添加到我的工作区中。

我已经多次成功下载代码和环境,但几分钟后,它失败了,我收到以下消息:

azure.core.exceptions.HttpResponseError: User is not authorized to perform current operation for workspace 'some-uuid-xxxxxxx-xxxxxx' and artifact 'some-uuid-ooooooo-oooooo'
ErrorCode:Forbidden

我没有改变任何东西。

10:23:29 成功。
10:29:42 成功。
10:37:10 失败。

有人可以帮忙吗? 谢谢。

python azure azure-blob-storage azure-storage
1个回答
0
投票

azure.core.exceptions.HttpResponseError:用户无权对工作区“some-uuid-xxxxxxx-xxxxxx”和工件“some-uuid-ooooooo-oooooo”执行当前操作。错误代码:禁止。

最初,当我将服务主体作为

viewer
添加到工作区时,我收到了相同的错误。

错误: Enter image description here

要从 Azure Data Lake 下载文件,服务主体应在工作区中具有

Contributor
角色。

以下是将贡献者角色添加到工作区的步骤:

传送门:

第1步:

Enter image description here

第2步:

Enter image description here

将角色分配给服务主体后,我运行了相同的代码,并且执行成功。

代码和输出: Enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.