Connect external app to Databricks App
This recipe demonstrates how to connect from your externally hosted application to an API deployed as a Databricks App.
This connectivity option is called Machine-to-Machine (M2M) and requires you to set up a Databricks service principal as per security best practices.
Code snippet
The example below requires you to input a valid databricks workspace host URl as well as service principal client id and client secret when instantiating the WorkspaceClient
.
Alternatively, you can set up these values as environment variables DATABRICKS_HOST
, DATABRICKS_CLIENT_ID
, and DATABRICKS_CLIENT_SECRET
. The WorkspaceClient
will auomatically pick up these environemnt variables.
from databricks.sdk import WorkspaceClient
import requests
wc = WorkspaceClient(
host="https://<DATABRICKS_HOST>",
client_id="<DATABRICKS_CLIENT_ID>",
client_secret="<DATABRICKS_CLIENT_SECRET>"
)
headers = wc.config.authenticate() # Contains Bearer Token
response = requests.get(
"https://your-app-url/api/v1/healthcheck", headers=headers
)
print(response.json())
Permissions
For external app connectivity and authentication, the connecting service principal needs the following permissions:
CAN USE
on the target app
Dependencies
- Databricks SDK for Python -
databricks-sdk
- Requests -
requests
databricks-sdk
requests