我想使用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.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 失败。
有人可以帮忙吗? 谢谢。
azure.core.exceptions.HttpResponseError:用户无权对工作区“some-uuid-xxxxxxx-xxxxxx”和工件“some-uuid-ooooooo-oooooo”执行当前操作。错误代码:禁止。
最初,当我将服务主体作为
viewer
添加到工作区时,我收到了相同的错误。
错误:
要从 Azure Data Lake 下载文件,服务主体应在工作区中具有
Contributor
角色。
以下是将贡献者角色添加到工作区的步骤:
传送门:
第1步:
第2步:
将角色分配给服务主体后,我运行了相同的代码,并且执行成功。
代码和输出: