В настоящее время я пытаюсь подключиться к azure datalakes-gen2, используя python для получения информации из файлов json, хранящихся внутри. Услышав, что модуль azure-datalakes для python не работает для gen 2 (и у меня возникли проблемы), я перешел к подключению через rest-api и пакет запросов, найденный в python. Однако чтение ссылок, оставленных Microsoft вместе с требуемым заголовком аутентификации, еще больше запутало меня в том, что делать.
Хотя у меня есть общее представление о Python, я все еще любитель, когда дело доходит до более продвинутых проектов, и мне всегда нужно искать вещи, однако я впервые задаю вопрос о помощи, а не ищу, пока не найду ответ (так что, пожалуйста, потерпите меня).
Я нашел полезную ссылку от Michal Pawlikowski, объясняющую, как подключиться через powershell, и это помогло объяснить множество слабых сторон, но все еще оставалось с двумя проблемами, во-первых, я не уверен в правильном кодировании заголовка аутентификации. в частности, «закодируйте эту строку с помощью алгоритма HMAC-SHA256 над строкой подписи в кодировке UTF-8», а во-вторых, в ней будут перечислены только файлы, найденные внутри каталога, а не информация, содержащаяся внутри файлов.
Вот что я пытался
date = "Wed, 15 May 2019 14:28:01 GMT"
string_to_sign = 'GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:'+date+'\nx-ms-version:2018-11-09\n/'+STORAGE_ACCOUNT_NAME+'/'+FILE_SYSTEM_NAME+'\nrecursive:true\nresource:fileststem'
signature = #Encoded string_to_sign + key, am unsure how to approach
auth_header = "SharedKey "+STORAGE_ACCOUNT_NAME+":"+signature
headers = {"Authorization" : auth_header, "x-ms-version" : "2018-11-09", "x-ms-date" : date}
req = requests.get("https://"+STORAGE_ACCOUNT_NAME+".dfs.core.windows.net/" + FILE_SYSTEM_NAME + "?recursive=true&resource=filesystem", headers=headers)
Я ожидаю, что req.text будет содержать информацию, найденную в файле json, однако я всегда получу сообщение об ошибке 403, подтверждающее, что мои заголовки отформатированы правильно.