メインコンテンツまでスキップ

Databricks アセットバンドルを使用した Databricks アプリの管理

Databricks Apps を使用すると、Databricks プラットフォーム上で安全なデータおよび AI アプリケーションを作成し、ユーザーと簡単に共有できます。Databricks Asset Bundle を使用して、アプリのデプロイを管理できます。アプリとバンドルの詳細については、「Databricks アプリ」および「Databricksアセットバンドルとは」を参照してください。

この記事では、Databricks アプリをローカルで開発し、Databricks Asset Bundle を使用して Databricks ワークスペースへのアプリのデプロイを管理するようにバンドルを構成する手順について説明します。

ヒント

Streamlit アプリでサンプル バンドルを初期化するには、streamlit-app バンドル テンプレートを bundle init コマンドと共に使用します。

Bash
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app

必要条件

アプリをローカルで作成する

まず、Databricks アプリを作成します。アプリは、Dash や Gradio などの一般的なフレームワークを使用して Python で開発されます。Databricks アプリをローカルでゼロからビルドするか、Databricks ワークスペースでアプリを作成してからファイルをローカル コンピューターに同期するか、GitHub から Databricks サンプル アプリを取得できます。

  • アプリをゼロから構築するには:

    1. フレームワークのクイックスタートチュートリアルに従ってください。

    2. プロジェクトのルートに app.yaml ファイルを追加して、メインの Python アプリの実行方法を定義します。例えば:

      Streamlit アプリの場合:

      YAML
      command: ['streamlit', 'run', 'app.py']

      または、Dashアプリの場合:

      YAML
      command: ['python', 'app.py']
  • ワークスペースでアプリを作成し、ローカルに同期するには:

    1. 「カスタム Databricks アプリを作成する」の手順に従って、UI でアプリを作成します。

    2. アプリのローカル ディレクトリを作成し、 cd します。

      Bash
      mkdir hello-world-app
      cd hello-world-app
    3. アプリのファイルをローカルに同期します。ワークスペース UI のアプリのインストール ページから databricks workspace export-dir コマンドをコピーして、コマンド ラインで実行できます。例えば:

      Bash
      databricks workspace export-dir /Workspace/Users/someone@example.com/databricks_apps/hello-world_2025_05_09-17_43/hello-world-app .

      これにより、ワークスペース ディレクトリ内のアプリ ファイルがローカル マシンの hello-world-app ディレクトリにダウンロードされます。

  • GitHub から Databricks サンプル アプリを取得するには:

    1. Databricks アプリ テンプレートの GitHub リポジトリを複製します。

      Bash
      git clone https://github.com/databricks/app-templates
    2. サンプル アプリの 1 つを単純なアプリ プロジェクトとして選択します。

既存のバンドルに既存のアプリを追加する

ワークスペースに Databricks アプリがあり、アプリを追加する既存のバンドルがある場合は、 databricks bundle generate app コマンドを使用できます。このコマンドは、アプリの設定ファイルを生成し、アプリのすべてのソースコードファイルをダウンロードして、バンドルに追加します。例えば:

Bash
databricks bundle generate app --existing-app-name hello-world-app

バンドルでアプリ構成を生成したら、 databricks bundle bind コマンドを使用して、ワークスペースとバンドル内のアプリの同期を維持します。

databricks bundle generatedatabricks bundle bindの詳細については、「bundle コマンド グループ」を参照してください。

アプリをローカルで開発およびデバッグする

次に、ローカルでアプリの開発を続けます。databricks apps run-localコマンドを使用してアプリを起動してデバッグします。このコマンドは、アプリ自体に要求をプロキシするために使用されるアプリ プロキシを開始し、必要な Databricks アプリ関連のヘッダーを挿入します。

  1. すべての依存関係をインストールし、仮想環境を準備してから、アプリとデバッガーを起動するには、--prepare-environment オプションと --debug オプションを指定して run-local コマンドを使用します。

    Bash
    databricks apps run-local --prepare-environment --debug

    このコマンドは、 uv を使用して仮想環境を準備し、デバッガーは debugpy.

  2. [ http://localhost:8001 ] に移動してアプリを表示します。

  3. アプリをデバッグするためのブレークポイントを設定します。Visual Studio Code で、Python デバッガーをインストールし、[ 実行 ] > [デバッグの開始 ] を選択し、[ リモートアタッチ] を選択します。

    プロキシはポート 5678 で開始されますが、 --port オプションを使用して構成できます。

バンドルを使用してアプリをワークスペースにデプロイする

アプリをワークスペースにデプロイする準備ができたら、アプリを作成するバンドル構成を追加してから、バンドルをデプロイします。

  1. アプリ プロジェクトのルートにファイル databricks.yml を作成します。Databricks CLI は、ルートに databricks.yml ファイルがあるフォルダーをバンドルとして認識し、 Databricks バンドル コマンドを有効にします。

  2. 次の YAML をコピーして databricks.yml ファイルに貼り付け、プレースホルダー ワークスペースとユーザー名の値を独自の値に置き換えます。

    YAML
    bundle:
    name: hello_world_bundle

    resources:
    apps:
    hello_world_app:
    name: 'hello-world-app'
    source_code_path: . # This assumes the app source code is at the root of the project.
    description: 'A Databricks app'

    targets:
    dev:
    mode: development
    default: true
    workspace:
    host: https://myworkspace.cloud.databricks.com
    prod:
    mode: production
    workspace:
    host: https://myworkspace.cloud.databricks.com
    root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
    permissions:
    - user_name: someone@example.com
    level: CAN_MANAGE
  3. 検証してから、バンドルをデプロイします。デフォルトでは、ワークスペースの dev ターゲットにアプリとバンドルが作成されます。

    Bash
    databricks bundle validate
    Bash
    databricks bundle deploy
  4. bundle summary コマンドを使用して、ワークスペースでアプリ ページを開くためのアプリ リソース URL を取得します。

    Bash
    databricks bundle summary
    Output
    Name: hello_world_bundle
    Target: dev
    Workspace:
    Host: https://myworkspace.cloud.databricks.com
    User: someone@example.com
    Path: /Workspace/Users/someone@example.com/.bundle/hello_world_bundle/dev
    Resources:
    Apps:
    hello_world_app:
    Name: hello-world-app
    URL: https://myworkspace.cloud.databricks.com/apps/hello-world-app?o=8498204313176880

開発、テスト、本番運用へのデプロイ

引き続きローカルでアプリに変更を加え、バンドルを再デプロイしてワークスペース内のアプリを更新します。ワークスペースでアプリを起動するには、次のコマンドでアプリのリソース キーを指定して、バンドル内のアプリを実行します。

Bash
databricks bundle run hello_world_app

アプリを本番運用で利用できるようにする準備ができたら、バンドルを対象の本番運用 ワークスペースにデプロイし、アプリを実行します。

Bash
databricks bundle deploy -t prod
databricks bundle run hello_world_app -t prod

追加のリソース