開發 Databricks Apps
重要
Databricks Apps 處於 公開預覽狀態。
注意
若要在 Databricks 工作區中部署和執行應用程式,您必須確定防火牆不會封鎖網域 *.databricksapps.com
。
本文提供使用 Databricks Apps 建立數據和 AI 應用程式的詳細數據,包括如何在 UI 中建立和編輯應用程式、如何使用 SQL 倉儲、秘密和 Databricks 作業等 Databricks 平臺功能、開發應用程式的最佳做法,以及使用支援架構開發應用程式的重要資訊。
如何? 在 Databricks Apps UI 中建立應用程式?
在側邊欄位中,點選 [新增],然後從功能表中選擇 select[應用程式]。
您可以從完整的預先建置範例應用程式開始,或使用原始程式碼和成品。
- 若要從範例應用程式開始,select範本,請按一下您偏好的架構索引標籤,然後從應用程式中的 list 選擇 select。
- 若要使用您的程式碼建立應用程式,select自訂。
按一下 [下一步] 。
在 [ 應用程式名稱] 欄位中,輸入應用程式的名稱,並選擇性地輸入描述。
注意
- 在建立應用程式之後,無法變更指派給 Databricks 應用程式的名稱,而且任何具有 Azure Databricks 工作區存取權的使用者都可以查看工作區中所有 Databricks 應用程式的名稱和部署歷程記錄。 此外,應用程式名稱會包含在寫入系統 tables的記錄中。 由於此可見度,您不應該在命名 Databricks 應用程式時包含敏感性資訊。
- 此名稱在裝載應用程式的 Azure Databricks 工作區中必須是唯一的,而且必須只包含小寫字母、數位和連字元。
如果您選取 [ 自定義],請按兩下 [ 建立應用程式]。 如果您選取 [ 範本],請設定必要的資源,然後按兩下 [ 建立和部署應用程式]。 請參閱 將 Databricks 平臺功能指派給 Databricks 應用程式。
按兩下 [建立和部署應用程式] 或 [建立應用程式] 之後,應用程式詳細數據頁面隨即出現。 如果您選取 [ 範本],Databricks Apps 會建立您的應用程式,然後部署應用程式,包括來自範本的範例程式代碼,以及應用程式的必要設定。 應用程式的詳細資料頁面會顯示:
- 應用程式建立和部署的狀態。
- 您可以用來繼續在本機開發應用程式的步驟,包括將應用程式成品複製到本機環境,以及將本機變更同步處理回 Azure Databricks 工作區。
如果您選取 [ 自定義],Databricks Apps 會建立您的應用程式。 因為您必須為應用程式新增程式碼和成品,因此您必須將應用程式部署為個別步驟。 應用程式的詳細資料頁面會顯示:
- 應用程式建立的狀態。
- 您可以使用以下步驟,將應用程式的程式代碼和成品從本機開發環境 sync 到 Azure Databricks 工作區,然後部署該應用程式。
若要瞭解如何 set 本機開發環境、在本機建立或 update 應用程式的程式代碼和組態,以及 sync 並將應用程式部署至 Azure Databricks 工作區,請參閱 Get 開始使用 Databricks Apps。
如果您選取 [ 範本 ],並想要將應用程式成品從工作區複製到本機開發環境,您可以使用 Databricks CLI:
databricks workspace export-dir <workspace-path> <target-path>
將:
-
<workspace-path>
包含應用程式程式代碼和成品的工作區檔案目錄路徑。 -
<target-path>
具有本機環境中要複製檔案的路徑。
-
將 Databricks 平臺功能指派給 Databricks 應用程式
注意
若要使用 Databricks SQL,服務主體需要存取 SQL 倉儲,以及查詢所存取的任何 tables。
若要使用 Databricks 平臺的功能,例如 Databricks SQL、Databricks 作業、馬賽克 AI 模型服務,以及 Databricks 秘密,請將這些功能新增至您的應用程式作為資源。 您可以在建立或編輯應用程式時新增資源。
在 [建立新的應用程式 或 編輯應用程式 卡片中,按兩下 [進階設定]>[+ 新增資源],然後 select 資源類型。
根據資源類型,完成設定資源所需的欄位,包括 [資源索引鍵 ] 字段。 此金鑰稍後會用來參考資源。
按一下 [檔案] 。
使用 SQL 倉儲資源索引鍵,
app.yaml
在組態檔中新增資源的專案。 因為這是參考參數值的來源,而不是實際值,請使用valueFrom
而不是value
。env: - name: "DATABRICKS_WAREHOUSE_ID" valueFrom: "sql-warehouse"
若要參考應用程式程式代碼中的資源,請使用 字段的值 (
name
在此範例中) 參考已設定的DATABRICKS_WAREHOUSE_ID
索引鍵值。import os os.getenv('DATABRICKS_WAREHOUSE_ID')
若要查看更多搭配應用程式使用資源的範例,包括 SQL 倉儲和模型服務端點,請參閱建立應用程式和最佳做法時的範本範例:使用秘密來儲存 Databricks 應用程式的敏感性資訊。
檢視 Databricks 應用程式的詳細數據
若要檢視 Databricks 應用程式的詳細資料頁面:
- 在側邊欄中按下 [計算]。
- 移至 [ 應用程式] 索引標籤。
- 在 [名稱]column中,按下應用程式名稱。
- [概 觀 ] 索引標籤隨即出現,其中包含應用程式的詳細數據,包括其狀態、部署位置,以及任何相關聯的資源。
- 若要存取應用程式的部署歷程記錄,請移至 [ 部署] 索引標籤 。
- 若要檢視應用程式的記錄,請移至 [ 記錄] 索引標籤。
- 若要檢視應用程式的運行時間環境,包括環境變數和已安裝的套件,請移至 [ 環境 ] 索引標籤。
設定 Databricks 應用程式的許可權
若要管理應用程式的許可權,您必須擁有 CAN MANAGE
或 IS OWNER
許可權。
- 在應用程式詳細數據頁面上,按兩下 [ 許可權]。
- 在 [許可權設定]中,selectSelect 使用者、群組或服務主體... 下拉功能表,然後 select 使用者、群組、服務主體或所有工作區使用者。
- 從許可權下拉選單中選擇一個許可權 Select。
- 按兩下 [ 新增 ],然後按兩下 [ 儲存]。
維護 Databricks 應用程式的狀態
應用程式在記憶體中維護的任何狀態會在重新啟動時遺失。 如果您的應用程式需要在重新啟動之間維護狀態,請將狀態儲存在外部。 例如,您的應用程式可以使用 Databricks SQL、工作區檔案或 Unity Catalogvolumes 來保存狀態。
從 Databricks 應用程式記錄
注意
若要在 Databricks Apps UI 或應用程式 URL 中檢視記錄,您的應用程式必須登入 stdout
和 stderr
。
若要檢視應用程式的標準輸出和標準錯誤,請在應用程式的詳細數據頁面上,按兩下 [記錄 ] 索引標籤。請參閱 檢視 Databricks 應用程式的詳細數據。
您也可以在連結檢視 <appurl>/logz
標準輸出和標準錯誤記錄檔。 例如,如果應用程式的 URL 是 https://my-app-1234567890.my-instance.databricksapps.com
,則您可以在 檢視記錄。https://my-app-1234567890.my-instance.databricksapps.com/logz
若要尋找應用程式 URL,請移至應用程式詳細數據頁面。
指定 Databricks 應用程式的連結庫相依性
如果您的應用程式需要隨部署安裝之自動安裝的套件以外的 Python 連結庫,請使用 requirements.txt
檔案來定義這些連結庫。 如果您的檔案中的 requirements.txt
套件重複其中一個自動安裝的套件,則中的 requirements.txt
版本會覆寫自動安裝的套件。
如需了解作為應用程式部署的一部分所安裝的套件和版本的 list,請參閱 已安裝的 Python 函式庫。
哪些 HTTP 標頭會傳遞至 Databricks 應用程式?
下列 X-Forwarded-*
標頭會從 Databricks Apps 反向 Proxy 傳遞至應用程式:
標頭 | 描述 |
---|---|
X-Forwarded-Host |
用戶端所要求的原始主機或網域。 |
X-Forwarded-Preferred-Username |
IdP 所提供的用戶名稱。 |
X-Forwarded-User |
IdP 提供的使用者 identifier。 |
X-Forwarded-Email |
IdP 所提供的用戶電子郵件。 |
X-Real-Ip |
發出原始要求用戶端的 IP 位址。 |
X-Request-Id |
要求的 UUID。 |
Databricks Apps 支援哪些架構?
您可以使用大部分的 Python 架構來開發您的應用程式。 為了查看使用特定框架的範例,包括 Dash、Gradio 和 Streamlit,請在 UI 中建立新應用程式時,參考來自範本應用程式庫的 select。 請參閱 如何? 在 Databricks Apps UI 中建立應用程式?。
如需 Databricks Apps 運行時間環境中 set 的 Streamlit 特定變數,請參閱 Streamlit的默認環境變數。
最佳做法:使用秘密來儲存 Databricks 應用程式的機密資訊
Databricks 建議使用秘密來儲存敏感性資訊,例如驗證 credentials。 若要深入瞭解如何使用秘密,請參閱 管理秘密。
若要搭配您的應用程式使用秘密:
將秘密設定為 應用程式資源。
在應用程式的組態檔中新增秘密的專案
app.yaml
。env: - name: "API_TOKEN" valueFrom: "api-token-value"
若要參考應用程式程式代碼中的秘密,請使用 字段的值 (
name
在此範例中) 參考已設定的API_TOKEN
索引鍵值。
token = os.getenv('API_TOKEN')
最佳做法:使用 Azure Databricks 功能進行數據處理
Databricks Apps 計算是專為提供 UI 而設計。 為了確保您的應用程式可以有效率地支援多個使用者,您應該使用 Databricks 功能來執行簡單的數據處理以外的任何專案。 例如,使用 Databricks SQL 進行查詢處理和儲存數據集、Databricks 作業以進行數據處理,或查詢 AI 模型的模型。
最佳做法:遵循安全編碼最佳做法
Databricks 建議您在開發應用程式時遵循安全的編碼作法,包括參數化查詢以避免 SQL 插入式攻擊。 請參閱語句執行 API。
實作 Databricks 應用程式的重要指導方針
- Databricks Apps 會在 15 秒後
SIGKILL
傳送SIGTERM
訊號,因此應用程式在收到SIGTERM
訊號後應該正常關閉不超過 15 秒。 如果應用程式在 15 秒後尚未結束,SIGKILL
則會傳送訊號來終止進程和所有子進程。 - 由於 Databricks Apps 是以非特殊許可權的系統使用者身分執行,因此無法執行需要在特殊許可權安全性內容中執行的作業,例如需要根使用者許可權的作業。
- 要求會從反向 Proxy 轉送,因此應用程式不得相依於要求的來源。 Databricks Apps 環境會為支持的架構設定必要的組態 parameters。
- 由於 Databricks 應用程式架構會管理傳輸層安全性 (TLS) connections,因此您的應用程式不得執行任何 TLS 連線或交握作業。
- 您的應用程式必須實作,以 HTTP/2 純文字 (H2C) 格式處理要求。
- Databricks 應用程式必須在 上
0.0.0.0
裝載 HTTP 伺服器,並使用環境變數中指定的DATABRICKS_APP_PORT
埠號碼。 請參閱 環境變數。