python - 为什么我无权使用 Python 在 Data Lake gen2 中创建文件系统

标签 python azure azure-blob-storage httpresponse azure-data-lake-gen2

使用azure.storage.filedatalake import DataLakeServiceClient在 Python 中,我创建了将文件上传到 Azure datalake gen 2 的功能。这可以正常工作,因为我上传的文件确实显示在我的 Datalake 中,无论是在本地运行我的代码还是使用我的 azurewebsite.net 时。

我现在正在尝试创建可以在我的 Datalake 中创建新容器/文件系统的功能,然后我可以将文件上传到其中。这在本地有效,但是当我在我的 azure 网站上尝试执行此操作时,出现以下错误:

HttpResponseError /project/create_file_container/
This request is not authorized to perform this operation.
ErrorCode: AuthorizationFailiure

我可以看到代码在这个特定点失败:

service_client = settings.SERVICE_CLIENT
# Creates a new datalake file_system for the org
system_name = 'org-1'
service_client.create_file_system(file_system=system_name) #<-- Fails on this line

我的service_client定义为:

STORAGE_ACCOUNT_NAME = 'my_datalake'
STORAGE_ACCOUNT_KEY = 'my account key'

global SERVICE_CLIENT
SERVICE_CLIENT = DataLakeServiceClient(account_url="{}://{}.dfs.core.windows.net".format(
    "https", STORAGE_ACCOUNT_NAME), credential=STORAGE_ACCOUNT_KEY)

创建 file_systems 时是否必须提供一些额外的身份验证?我认为由于我可以上传文件,因此也允许创建 file_systems。

最佳答案

我也遇到过同样的问题,这是一个权限问题。确保为服务主体分配 Data Lake Storage Gen2 存储帐户范围内的 Blob 存储贡献者角色。

注意:您可以将角色分配给父级订阅或资源组,但将其分散到存储帐户将需要时间进行分配。如果将订阅或资源分配给订阅或资源组,然后建立存储帐户,则应立即继承该任务。当您完成类(class)时,您应该将您的帐户直接附加到存储帐户,这样它就不会被阻止,并且如果您已经使用了存储帐户,则不必等待。

关于python - 为什么我无权使用 Python 在 Data Lake gen2 中创建文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68653524/

相关文章:

azure-blob-storage - 在 Azure Blob 上对 Parquet 文件进行分区 (pyarrow)

python - 使用光流对图像进行对流

python - Unicode解码错误: 'utf-8' can't decode byte

sql - Azure弹性作业删除

azure - 从 Azure Blob 存储中的任何身份验证检查中排除 sig querystring 参数

azure - 我在 blob 存储中获取连续的 blob 文件。我必须加载 Databricks 并放入 Azure SQL DB。用于编排此管道的数据工厂

python - google-api-python-client 1.9.3 的重大更改 - AttributeError : module 'google.api_core' has no attribute 'gapic_v1'

python - 谷歌应用引擎 SDK : ImproperlyConfigured: Error loading MySQLdb module: No module named _mysql

ios - Azure 推送通知 + .NET 后端 API - 未发送通知

azure - 如果 Key Vault 中的 secret 更新,是否应该重新启动 Azure Functions 应用程序?