簡體   English   中英

Databricks REST API 調用更新分支錯誤:用戶設置 > Git 集成以設置 Azure DevOps 個人訪問令牌

[英]Databricks REST API call for updating branch error : User Settings > Git Integration to set up an Azure DevOps personal access token

我在使用https://docs.databricks.com/dev-tools/api/latest/repos.html#operation/update-repo中提到的 databricks rest api 將 repo 更新到不同的分支時遇到錯誤。

我已經使用服務主體進行了身份驗證並生成了 dbrks_bearer_token 和 dbrks_management_token。

請在下面找到相同的代碼:-

import requests
import os
import json

TOKEN_REQ_BODY = {
    'grant_type': 'client_credentials',
    'client_id':  'client_id',
    'client_secret':  'client_secret'
}
TOKEN_BASE_URL = 'https://login.microsoftonline.com/' +  'tenant_id' + '/oauth2/token'
TOKEN_REQ_HEADERS = {'Content-Type': 'application/x-www-form-urlencoded'}


def dbrks_management_token():
    TOKEN_REQ_BODY['resource'] = 'https://management.core.windows.net/'
    response = requests.get(TOKEN_BASE_URL, headers=TOKEN_REQ_HEADERS, data=TOKEN_REQ_BODY)
    if response.status_code == 200:
        print(response.status_code)
        return response.json()['access_token']
    else:
        raise Exception(response.text)
        return response.json()['access_token']

def dbrks_bearer_token():
    TOKEN_REQ_BODY['resource'] = '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'
    response = requests.get(TOKEN_BASE_URL, headers=TOKEN_REQ_HEADERS, data=TOKEN_REQ_BODY)
    if response.status_code == 200:
        print(response.status_code)
    else:
        raise Exception(response.text)
    return response.json()['access_token']

DBRKS_BEARER_TOKEN = dbrks_bearer_token()
DBRKS_MANAGEMENT_TOKEN = dbrks_management_token()


DBRKS_REQ_HEADERS = {
    'Authorization': 'Bearer ' + DBRKS_BEARER_TOKEN,
    'X-Databricks-Azure-Workspace-Resource-Id':
        '/subscriptions/susbcriptionid' +
        '/resourceGroups/rg-dev/providers/Microsoft.Databricks/workspaces/dbr-dev',
    'X-Databricks-Azure-SP-Management-Token':  DBRKS_MANAGEMENT_TOKEN }

DBRKS_CLUSTER_ID = {'cluster_id': 'cluster_id'}

def update_repo():
    DBRKS_START_ENDPOINT = 'api/2.0/repos/0328767704612345'
    postjson = """{
     "branch": "main"
  }"""

    response = requests.patch("https://adb-1234582271731234.0.azuredatabricks.net/"
                              + DBRKS_START_ENDPOINT,
                              headers=DBRKS_REQ_HEADERS,
                              json=json.loads(postjson))
    print(response.status_code)
    if response.status_code != 200:
        raise Exception(response.text)

    os.environ["DBRKS_CLUSTER_ID"] = response.json()["cluster_id"]
    print(response.content)

update_repo()

我收到以下錯誤:-

Traceback (most recent call last):
  File "C:/Users/IdeaProjects/DBCluster/DB_rest_api.py", line 109, in <module>
    update_repo()
  File "C:/Users/IdeaProjects/DBCluster/DB_rest_api.py", line 104, in update_repo
    raise Exception(response.text)
Exception: {"error_code":"PERMISSION_DENIED","message":"Missing Git provider credentials. Go to User Settings > Git Integration to add your personal access token."}
403

有人可以讓我知道我是否還需要在 azure devops git 配置級別明確地做任何事情嗎?

非常感謝..!!

要對 Databricks Repos 進行任何操作,您需要設置一個 Git 個人訪問令牌。 因為您使用的是服務主體,所以您無法通過 UI 設置該個人訪問令牌,但您可以使用最近實施的Git Credentials REST API執行該 Git 令牌的設置 - 只需為您的服務主體執行一次(或當 Git PAT expires),然后 Repos 操作將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM