Databricks アプリの開発
Databricks ワークスペースでアプリをデプロイして実行するには、ファイアウォールがドメイン *.databricksapps.com
をブロックしていないことを確認する必要があります。
この記事では、UI でAIアプリを作成および編集する方法、Databricks SQLウェアハウス、シークレット、Databricksジョブなどの プラットフォーム機能の使用方法、アプリ開発のベストDatabricks プラクティス、サポートされているフレームワークを使用してアプリを開発するための重要な情報など、Databricks Apps を使用してデータ アプリとAIアプリを作成する方法について詳しく説明します。
Databricks Apps UI でアプリを作成するにはどうすればよいですか?
-
サイドバーで「
新規 」をクリックし、メニューから「 アプリ 」を選択します。
-
完全な事前構築済みのサンプル アプリから始めることも、ソース コードとアーティファクトを使用することもできます。
- サンプル アプリから開始するには、 テンプレート を選択し、優先するフレームワークのタブをクリックして、アプリの一覧から選択します。
- コードを使用してアプリを作成するには、 カスタム を選択します。
-
「 次へ 」をクリックします。
-
アプリ名フィールドに 、アプリの名前を入力し、オプションで説明を入力します。
-
Databricks アプリに割り当てられた名前は、アプリの作成後に変更することはできず、Databricks ワークスペースにアクセスできるすべてのユーザーは、ワークスペース内のすべての Databricks アプリの名前とデプロイ履歴を確認できます。 さらに、アプリ名はシステムテーブルに書き込まれるレコードに含まれます。 この可視性のため、Databricks アプリに名前を付けるときに機密情報を含めないでください。
-
名前は、アプリをホストする Databricks ワークスペース内で一意である必要があり、小文字、数字、ハイフンのみを含める必要があります。
カスタム を選択した場合は、 アプリを作成 をクリックします。 テンプレート を選択した場合は、必要なリソースを構成し、 アプリの作成とデプロイ をクリックします。「 Databricks プラットフォーム機能を Databricks アプリに割り当てる」を参照してください。
アプリの詳細ページは、[ アプリの作成とデプロイ ] または [ アプリの作成 ] をクリックすると表示されます。 [テンプレート] を選択した場合、Databricks Apps はアプリを作成し、テンプレートのサンプル コードとアプリの必要な構成を含むアプリをデプロイします。アプリの詳細ページには、次の情報が表示されます。
- アプリの作成とデプロイの状態。
- アプリのアーティファクトをローカル環境にコピーしたり、ローカルの変更を Databricks ワークスペースに同期したりするなど、アプリをローカルで開発を続行するために使用できる手順。
カスタム を選択した場合は、Databricks Apps によってアプリが作成されます。アプリのコードとアーティファクトを追加する必要があるため、アプリを別のステップとしてデプロイする必要があります。 アプリの詳細ページには、次の情報が表示されます。
- アプリの作成ステータス。
- アプリのコードとアーティファクトをローカル開発環境から Databricks ワークスペースに同期し、アプリをデプロイする手順。
ローカル開発環境を設定する方法、アプリのコードと構成をローカルで作成または更新する方法、アプリを Databricks ワークスペースに同期してデプロイする方法については、「 Databricks アプリの概要」を参照してください。 5. テンプレート を選択し、アプリのアーティファクトをワークスペースからローカル開発環境にコピーする場合は、次のDatabricks CLIを使用できます。
databricks workspace export-dir <workspace-path> <target-path>
以下のように置き換えてください。
<workspace-path>
は、アプリのコードとアーティファクトを含むワークスペースファイルディレクトリへのパスに置き換えます。<target-path>
を、ファイルのコピー先となるローカル環境内のパスに置き換えます。
Databricks プラットフォーム機能を Databricks アプリに割り当てる
Databricks SQLを使用するには、サービスプリンシパルはSQLウェアハウスとクエリによってアクセスされるテーブルへのアクセスが必要です。
Databricks SQL、Databricks Jobs、Mosaic AI Model Serving 、Databricks シークレットなどの Databricksプラットフォームの機能を使用するには、これらの機能をリソースとしてアプリに追加します。リソースは、アプリを作成 または編集するときに追加できます。
-
新しいアプリの作成 または アプリの編集 カードで、 詳細設定 > + リソースの追加 をクリックし、リソースの種類を選択します。
-
リソースのタイプに応じて、リソースの設定に必要なフィールド ( リソースキー フィールドなど) を入力します。 このキーは、後でリソースを参照するために使用されます。
-
[ 保存 ]をクリックします。
-
SQLウェアハウス リソース キーを使用して、
app.yaml
構成ファイルにリソースのエントリを追加します。これは実際の値ではなくパラメーター値のソースを参照しているため、value
の代わりにvalueFrom
を使用します。YAMLenv:
- name: 'DATABRICKS_WAREHOUSE_ID'
valueFrom: 'sql-warehouse' -
アプリ コードでリソースを参照するには、
name
フィールドの値 (この例ではDATABRICKS_WAREHOUSE_ID
) を使用して、構成されたキー値を参照します。Pythonimport os
os.getenv('DATABRICKS_WAREHOUSE_ID')
SQLウェアハウス エンドポイントやモデル サービング エンドポイントなど、アプリでリソースを使用するその他の例については、アプリ作成時のテンプレートの例とDatabricksアプリの機密情報を格納するシークレットの使用をご覧ください。
Databricks アプリの詳細を表示する
Databricks アプリの詳細ページを表示するには:
- サイドバーの
[ コンピュート ]をクリックします。
- アプリ タブに移動します。
- [ 名前 ] 列で、アプリ名をクリックします。
- [ 概要 ] タブが表示され、アプリのステータス、デプロイ場所、関連リソースなど、アプリの詳細が表示されます。
- アプリのデプロイ履歴にアクセスするには、[ デプロイ ] タブに移動します。
- アプリのログを表示するには、[ ログ ] タブに移動します。
- 環境変数やインストール済みパッケージなど、アプリのランタイム環境を表示するには、[ 環境 ] タブに移動します。
Databricks アプリのアクセス許可を構成する
アプリの権限を管理するには、 CAN MANAGE
または IS OWNER
の権限が必要です。アプリにアクセスするには、ユーザーはアプリに対する CAN_USE
または CAN_MANAGE
権限を持っている必要があります。ユーザーがアプリに対して CAN_MANAGE
権限を必要としない限り、Databricks では CAN_USE
権限のみを割り当てることをお勧めします。
- アプリの詳細ページで、 権限 をクリックします。
- 権限設定 で、 ユーザー、グループ、またはサービスプリンシパルの選択 ドロップダウンメニューを選択し、ユーザー、グループ、サービスプリンシパル、またはすべてのワークスペースユーザーを選択します。
- 権限のドロップダウンメニューから権限を選択します。
- [ 追加 ] をクリックし、[ 保存 ] をクリックします。
Databricks アプリの状態の維持
アプリがメモリに保持している状態は、再起動すると失われます。 アプリで再起動間で状態を維持する必要がある場合は、状態を外部に保存します。 たとえば、アプリでは Databricks SQL、 ワークスペース ファイル、 または Unity Catalog ボリューム を使用して状態を保持できます。
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
ファイル内のパッケージが自動的にインストールされたパッケージの 1 つと重複している場合、requirements.txt
内のバージョンが自動的にインストールされたパッケージよりも優先されます。
アプリのデプロイの一部としてインストールされるパッケージとバージョンの一覧については、「 インストールされている Python ライブラリ」を参照してください。
Databricks アプリに渡される HTTP ヘッダー
次の X-Forwarded-*
ヘッダーは、Databricks アプリのリバース プロキシからアプリに渡されます。
header | 説明 |
---|---|
| クライアントによって要求された元のホストまたはドメイン。 |
| IdPから提供されたユーザー名。 |
| IdP によって提供されるユーザー識別子。 |
| IdPが提供するユーザーEメール。 |
| 元の要求を行ったクライアントの IP アドレス。 |
| リクエストのUUID。 |
シークレットを使用して Databricks アプリの機密情報を保存する
Databricks では、シークレットを使用して、認証資格情報などの機密情報を格納することをお勧めします。 シークレットの使用の詳細については、シークレットの管理を参照してください。
アプリでシークレットを使用するには:
-
シークレットを アプリ リソースとして構成します。
-
シークレットのエントリをアプリの
app.yaml
設定ファイルに追加します。YAMLenv:
- name: 'API_TOKEN'
valueFrom: 'api-token-value' -
アプリコードのシークレットを参照するには、
name
フィールドの値(この例ではAPI_TOKEN
)を使用して、設定されたキー値を参照します。
token = os.getenv('API_TOKEN')