Получение ошибки HTTP 403 - недопустимый токен доступа при попытке доступа к кластеру через блоки данных Azure

Я пытаюсь получить доступ к искровому кластеру Azure databricks с помощью сценария python, который принимает токен в качестве входных данных, сгенерированных с помощью пользовательских настроек databricks, и вызывает метод Get, чтобы получить сведения о кластере вместе с идентификатором кластера.

Ниже приведен фрагмент кода. Как показано, я создал кластер в зоне southcentralus.

import requests
headers = {"Authorization":"Bearer dapiad************************"}
data=requests.get("https://southcentralus.azuredatabricks.net/api/2.0/clusters/get?cluster_id=**************",headers=headers).text
print data

Ожидаемый результат должен дать полную информацию о кластере, например. {"cluster_id":"0128-******","spark_context_id":3850138716505089853,"cluster_name":"abcdxyz","spark_version":"5.1.x-scala2.11","spark_conf":{"spark.databricks.delta.preview.enabled":"true"},"node_type_id" and so on .....}

Приведенный выше код работает, когда я выполняю код в google colaboratory, тогда как он не работает с моей локальной IDE, то есть в режиме ожидания. Это дает ошибку HTTP 403, указав, как показано ниже:

<p>Problem accessing /api/2.0/clusters/get. Reason:
<pre>    Invalid access token.</pre></p>

Может ли кто-нибудь помочь мне решить проблему? Я застрял в этой части и не могу получить доступ к кластеру через API.


person user39602    schedule 05.02.2019    source источник
comment
Это может быть связано с проблемой кодирования при передаче секрета. Пожалуйста, изучите эту проблему и способы ее решения. forum.databricks.com/questions/6590/ & forum.databricks.com/questions/6621/   -  person Venkataraman R    schedule 05.02.2019


Ответы (1)


Это может быть связано с проблемой кодирования при передаче секрета. Пожалуйста, изучите эту проблему и способы ее решения. Несмотря на то, что разрешение, которое они дали для AWS, оно может быть аналогичным и для Azure. В вашем секрете может быть "/", который вам нужно заменить.

В последнем обновлении есть известная проблема, связанная с символом «+» в секретных ключах. В частности, мы больше не поддерживаем экранирование символа «+» на «% 2B», что есть в некоторых библиотеках кодирования URL.

Текущий лучший способ кодирования секретного ключа AWS - это просто

secretKey.replace("/","%2F")

ниже приведен пример скрипта на Python:

New_Secret_key = "MySecret/".replace("/","%2F")

https://forums.databricks.com/questions/6590/s3serviceexception-raised-when-accessing-via-mount.html

https://forums.databricks.com/questions/6621/responsecode403-responsemessageforbidden.html

person Venkataraman R    schedule 05.02.2019
comment
Спасибо за ответ. У вас есть образец кода Python для применения метода secretKey.replace ()? - person user39602; 05.02.2019