我使用DefaultAzureCredential從azure-identity連接到Azure服務主體環境變量(AZURE_CLIENT_SECRET, AZURE_TENANT_ID AZURE_CLIENT_ID)。
我可以從一個特定的範圍get_token磚是這樣的:
從azure。身份進口DefaultAzureCredential dbx_scope = " 2 ff814a6 - 3304 - 4 - ab8 - 85 - cb - cd0e6f879c1d / .default”牌= DefaultAzureCredential () .get_token .token (dbx_scope)
這是偉大的工作,我得到了令牌,然後我可以使用“databricks-connect”配置連接到集群。我生成一個配置文件($ HOME / .databricks-connect)火花知道連接和使用給定的令牌。
{“主機”:“https://adb - 1234. azuredatabricks.net”,“令牌”:“eyJ0eXAiXXXXXXXXXXXXXXXXXXXXXx”、“cluster_id”:“1234”,“org_id”:“1234”,“港”:" 15001 "}
問題是,這個令牌並沒有持續很長時間。當我使用引發了一個多小時,我斷開連接,因為令牌過期了。
有辦法再令牌與服務主體磚?因為這為生產目標,我希望我的代碼可以生成任何運行的帕特,我不想手動創建一個帕特和存儲Azure密鑰庫。
我由一個可選擇的解決方案。我由我自己的python類來處理我的拍磚:https://stackoverflow.com/questions/75071869/python-defaultazurecredential-get-token-set-expiration-..。
你甚至可以更漂亮或者注冊一個atexit內部類來摧毀帕特。但這將有一個副作用。python過程將退出沒有錯誤代碼,但是如果你有一個記錄器,它會警告你,與磚是封閉的,因為無效的令牌。這是“正常”,但醜陋。