Почему я не авторизован для создания файловой системы в Datalake gen2 с помощью Python

#python #azure #azure-blob-storage #httpresponse #azure-data-lake-gen2

Вопрос:

Используя azure.storage.filedatalake import DataLakeServiceClient в Python, я создал функциональность для загрузки файлов в свой Azure datalake gen 2. Это работает так, как и должно быть, так как файлы, которые я загружаю, действительно отображаются в моем хранилище данных, КАК при локальном запуске кода, так и с помощью моего azurewebsite.net.

Сейчас я пытаюсь создать функциональность, которая может создать новый контейнер/файловую систему в моем хранилище данных, в которое я затем могу загружать файлы. Это работает локально, однако, когда я пытаюсь сделать это на своем сайте azurewebsite, я получаю следующую ошибку:

 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)
 

Есть ли какая-то дополнительная аутентификация, которую я должен предоставить при создании файловых систем ? Я бы предположил, что, поскольку я могу загружать файлы, создание файловых систем также будет разрешено.

Ответ №1:

Я столкнулся с той же проблемой, и это проблема с разрешением. Убедитесь, что участнику службы назначена роль Участника хранилища больших двоичных объектов в области действия учетной записи хранения Gen2 хранилища озера данных.

Примечание.Вы можете назначить роль родительской подписке или группе ресурсов, но для ее распространения на учетную запись хранения потребуется время для назначения. Если вы назначите подписку или ресурсы группе подписки или ресурсов, а затем создадите учетную запись хранения, вы должны мгновенно унаследовать задачу. Когда вы закончите урок, вам следует напрямую подключить свою учетную запись к учетной записи хранения, чтобы она не была заблокирована и вам не пришлось ждать, если у вас уже используется учетная запись хранения.