Databricks アプリをデプロイする

Azure Databricks アプリを作成して開発したら、アプリをデプロイして、Azure Databricks ワークスペースでアクセスできるようにします。 配置によってアプリがビルドされ、依存関係がインストールされ、プロジェクト ファイルで定義されている構成を使用して実行されます。 Azure Databricks UI または Databricks CLI を使用してアプリをデプロイできます。

注

テンプレートからアプリを作成する場合、Azure Databricks最初に作成したときに自動的にデプロイされます。 ただし、後で変更を加えた後でも、再デプロイできます。 「テンプレートから Databricks アプリを作成する」を参照してください。

デプロイ ロジック

Databricks Apps では、Python、Node.js、またはその両方の組み合わせを使用するアプリケーションのデプロイがサポートされています。 これにより、Python バックエンドを備えた Node.js フロントエンドなどの柔軟なアーキテクチャが可能になります。

デプロイ時に、ビルド プロセスによって、アプリ ディレクトリのルートにある package.json ファイルがチェックされ、Node.js が使用されているかどうかを判断します。 存在する場合は、ノード固有のビルドステップとPythonステップが含まれます。 デプロイ ロジックは、次のパターンに従います。

package.jsonが存在する場合:

  1. Node.js の依存関係をインストールします。 pnpm-lock.yamlが存在する場合は、pnpm install --frozen-lockfile実行します。それ以外の場合は、npm install実行します。 「 依存関係 Node.js 定義する」を参照してください。
  2. Pythonの依存関係をインストールします。
    • requirements.txt が存在する場合は、pip install -r requirements.txt を実行します
    • requirements.txtが存在せず、pyproject.tomlとuv.lockの両方が存在する場合は、uv syncを実行して依存関係をインストールします
  3. build (package.jsonまたはnpm run build) で定義されている場合は、pnpm run build スクリプトを実行します。
  4. app.yamlで指定されたコマンドを実行します。 npm アプリの場合、コマンドが指定されていない場合、Azure Databricksはnpm run start実行されます。 pnpm アプリでは、 app.yamlでコマンドを指定する必要があります。

注

npm アプリの場合、app.yamlでコマンドが指定されていない場合、Azure Databricksは、Pythonコードが含まれている場合でも、npm run startを実行します。 Pythonプロセスと Node.js プロセスの両方を実行するには、start などのツールを使用して両方を起動するカスタム concurrently スクリプトを定義します。 たとえば、 concurrently "npm run start:node" "python my_app.py"と指定します。

package.jsonが存在しない場合:

  1. Pythonの依存関係をインストールします。
    • requirements.txt が存在する場合は、pip install -r requirements.txt を実行します
    • requirements.txtが存在せず、pyproject.tomlとuv.lockの両方が存在する場合は、uv syncを実行して依存関係をインストールします
  2. app.yamlで指定されたコマンドを実行するか、コマンドが指定されていない場合はpython <my-app>.pyします

デプロイの準備

アプリをデプロイする前に、プロジェクトに必要なコンポーネントが含まれていることを確認します。

さらに、App Service プリンシパル がソース コード フォルダーにアクセスできることを確認します。

デプロイ ソースを選択する

Databricks アプリは、次のソースからデプロイできます。

  • ワークスペース フォルダー - アプリ ファイルをワークスペース フォルダーにアップロードし、そこからデプロイします。 これが標準のデプロイ方法です。 「ワークスペース フォルダーからのデプロイ」を参照してください。
  • Git リポジトリ - アプリの Git リポジトリを構成し、ワークスペースにファイルをアップロードせずに直接デプロイします。 アプリは、デプロイするたびに、構成された Git 参照 (ブランチ、タグ、またはコミット) からコードを読み取ります。 Git リポジトリからのデプロイを参照してください。

同じアプリのワークスペースと Git ソースをいつでも切り替えることができます。 アプリの更新または再デプロイに関する記事を参照してください。

アプリをデプロイする

以降のセクションでは、ワークスペース フォルダーから、または Git リポジトリから直接デプロイする方法について説明します。

ワークスペース フォルダーからデプロイする

Databricks ユーザーインターフェース

Azure Databricks UI からアプリをデプロイするには:

  1. アプリ ファイルを Azure Databricks ワークスペースにアップロードします。 手順については、「 ファイルのインポート」を参照してください。
  2. Databricks ワークスペースで、[ アプリ] アイコン をクリックします。アプリ スイッチャーをクリックし、[ Databricks Apps] を選択します。
  3. [名前] 列でアプリを選択します。
  4. [ デプロイ ] をクリックし、アプリ ファイルをアップロードしたワークスペース内のフォルダーを選択します。
  5. [ 選択]、[ デプロイ] の順にクリックします。

Databricks コマンドラインインターフェース (CLI)

CLI を使用してアプリをデプロイするには:

  1. ターミナルを開き、アプリ ファイルを含むディレクトリに移動します。

  2. sync コマンドを使用して、アプリ ファイルを Azure Databricks ワークスペースにアップロードします。 パスを、ファイルをアップロードするワークスペースの場所に置き換えます。

    databricks sync --watch . /Workspace/Users/my-email@org.com/my-app
    

    --watch フラグは同期プロセスを実行し続け、ファイルをローカルで変更すると自動的に変更をアップロードします。 特定のファイルまたはディレクトリを同期から除外するには、ローカル アプリ ディレクトリの .gitignore ファイルに追加します。 除外する一般的なファイルは、 node_modules/、 .env、 __pycache__/、 .DS_Store、および大きなデータ ファイルまたはビルド成果物です。

  3. ワークスペース内のファイルを表示して、アップロードを確認します。 [アプリ] アイコン をクリックします。アプリ スイッチャー >Analytics と AI をクリックし、[ワークスペース アイコンワークスペース] をクリックし、アプリ用に作成したディレクトリに移動します。

  4. 次のコマンドを実行して、アプリをデプロイします。 アプリ名とソース コードのパスを実際の値に置き換えます。

    databricks apps deploy my-app-name \
       --source-code-path /Workspace/Users/my-email@org.com/my-app
    

    CLI では、デプロイの進行状況が表示され、アプリがいつ実行されているかが確認されます。

Git リポジトリからデプロイする

Git リポジトリからアプリをデプロイするには、アプリ レベルでリポジトリを追加し、デプロイ時に Git 参照を指定します。 Git リポジトリには、 app.yaml、依存関係、エントリ ポイントを含むアプリ ファイルが含まれている必要があります。 GitHub、GitLab、Bitbucket など、すべての主要な Git プロバイダーがサポートされています。 UI、CLI、API、または宣言型オートメーション バンドルを使用して、Git ベースのアプリをデプロイすることもできます。

Databricks ユーザーインターフェース

Git からアプリを構成してデプロイするには:

  1. Git リポジトリにアプリ ファイルをアップロードします。
  2. Databricks ワークスペースで、[ アプリ] アイコン をクリックします。アプリ スイッチャーをクリックし、[ Databricks Apps] を選択します。
  3. 編集する既存のアプリを選択するか、[ + アプリの作成 ] をクリックして カスタム アプリを作成します。 「カスタム Databricks アプリを作成する」を参照してください。
  4. Git の 構成 手順で、Git リポジトリの URL (たとえば、 https://github.com/org/repo) を入力し、Git プロバイダーを選択します。
  5. 新しいアプリの場合は、 Git 参照 (ブランチ、タグ、またはコミット) を入力します。 GitHubまたはAzure DevOpsリポジトリの場合、ブランチが選択されている場合は、必要に応じてプッシュ イベントでの自動デプロイを有効にします。 Git の自動デプロイを有効にするを参照してください。
  6. [ アプリの作成 ] または [保存] を クリックして、アプリの概要ページに戻ります。
  7. プライベート リポジトリの場合、アプリのサービス プリンシパルには Git 資格情報が構成されている必要があります。 アプリの概要ページで、[ Git 資格情報の構成] をクリックします。 Git認証情報を追加するには、アプリのサービスプリンシパルで CAN MANAGE 権限が必要です。 パブリック リポジトリでは、Git 資格情報は必要ありません。 各プロバイダーの手順については、「 Git プロバイダーを Databricks に接続する」を参照してください。

次に、アプリをデプロイします。

  1. アプリの概要ページで、[ デプロイ] をクリックします。
  2. [Git から] を選択します。
  3. Git リファレンスでは、ブランチ名、タグ、またはコミット SHA (main、v1.0.0、コミット ハッシュなど) を入力します。
  4. [参照の種類] には、参照の種類 (ブランチ、タグ、コミットなど) を指定します。
  5. (省略可能) ソース コード パスには、リポジトリ内の特定のディレクトリへのパスを入力します。 アプリはそのディレクトリを最上位のディレクトリとして扱い、外部のファイルにアクセスすることはできません。 パスを指定しない場合、Databricks はリポジトリ ルートを使用します。
  6. (省略可能)ブランチへのすべてのコミットに自動的にデプロイするには、 プッシュ イベントに対して自動デプロイを有効にします。 視聴するにはブランチを設定する必要があります。 必要に応じて、 ソース コード パス を含め、リポジトリ ルート以外のパスを設定できます。 Git の自動デプロイを有効にするを参照してください。
  7. [デプロイ] をクリックします。

Databricks コマンドラインインターフェース (CLI)

CLI を使用して Git からアプリをデプロイするには:

  1. Git リポジトリにアプリ ファイルをアップロードします。

  2. アプリの作成時にアプリで Git リポジトリを構成するか、既存のアプリに追加します。 サポートされているプロバイダーには、 gitHub、 gitHubEnterprise、 gitLab、 gitLabEnterpriseEdition、 bitbucketCloud、 bitbucketServer、 azureDevOpsServices、および awsCodeCommitが含まれます。

    Git リポジトリが構成された新しいアプリを作成するには、 create コマンドを使用します。

    databricks apps create my-app \
       --git-url https://github.com/org/repo --git-provider gitHub
    

    既存のアプリでGitリポジトリを追加または更新するには、 update コマンドを使用します:

    databricks apps update my-app \
       --git-url https://github.com/org/repo --git-provider gitHub
    

    --git-urlと--git-providerを一緒に設定してください(Databricks CLI 1.14.0以降)。

  3. プライベート リポジトリの場合は、アプリのサービス プリンシパルの Git 資格情報を構成します。 Git認証情報を追加するには、アプリのサービスプリンシパルで CAN MANAGE 権限が必要です。 パブリック リポジトリでは、Git 資格情報は必要ありません。

    CLI を使用してアプリのサービス プリンシパルに Git 資格情報を追加するには、次を実行します。

    databricks git-credentials create --json '{
      "git_provider": "gitHub",
      "git_email": "your-email@example.com",
      "personal_access_token": "YOUR_TOKEN",
      "principal_id": YOUR_SP_ID,
      "name": "GitHub credentials for SP"
    }'
    

    YOUR_SP_IDをアプリのサービス プリンシパル ID に置き換えます。 各プロバイダーの個人用アクセス トークンを取得する手順については、「 Git プロバイダーを Databricks に接続する」を参照してください。

  4. Git 参照を指定してアプリをデプロイします。 --git-branch、--git-tag、または--git-commitのいずれかを使いましょう。 オプションとして、リポジトリ内のサブディレクトリからデプロイするための --git-source-code-path を追加することもできます。

    databricks apps deploy my-app --git-branch main
    

    特定のタグまたはコミットをデプロイするには:

    databricks apps deploy my-app --git-tag v1.0.0
    
    databricks apps deploy my-app --git-commit abc123def456
    

    リポジトリ内のサブディレクトリからデプロイするには:

    databricks apps deploy my-app --git-branch main --git-source-code-path apps/my-app
    

    CLI では、デプロイの進行状況が表示され、アプリがいつ実行されているかが確認されます。

  5. 手動で実行するのではなく、毎回プッシュで自動的に再デプロイ deploy するには、 自動Gitデプロイメントを有効にしてください。

ブランチまたはタグ参照の場合、Azure Databricksはそのブランチまたはタグから最新のコミットをデプロイします。 コミット SHA 参照の場合、Azure Databricksは常にその特定のコミットをデプロイします。 サービス プリンシパルの Git 資格情報が無効であるか、有効期限が切れている場合、デプロイは失敗します。

注

Git デプロイが一般公開される前に作成されたアプリは、アプリのサービス プリンシパルに対するアクセス許可 CAN MANAGE 作成者に自動的には付与されません。 古いアプリに Git 資格情報を追加する必要がある場合は、ワークスペース管理者にサービス プリンシパルに対する CAN MANAGE アクセス許可を付与するように依頼します。

サービス プリンシパルは、プロバイダーごとに 1 つの Git 資格情報をサポートします。 アカウント コンソールなどの別の場所で資格情報を更新すると、そのプロバイダーの既存の資格情報が置き換えられます。

Git の自動デプロイを有効にする

注

GitHubとAzure DevOpsは自動展開のサポートプロバイダーです。

自動デプロイを有効にすると、Azure Databricksは Git リポジトリに Webhook (Azure DevOps のサービス フックと呼ばれます) を登録し、構成されたブランチが新しいコミットを受け取るたびにアプリを再デプロイします。 デプロイされたアプリは、手動で手順を実行しなくても、リポジトリと同期したままです。

自動デプロイには、Git プロバイダーによって異なる次のセットアップが必要です。

GitHub
  • Azure Databricks GitHub アプリはリポジトリにインストールする必要があります。
  • リポジトリはプライベートである必要があります。 Databricks では、パブリック リポジトリからの自動デプロイはサポートされていません。
  • アプリのサービス プリンシパルには、リポジトリへのアクセス権を持つ Git 資格情報が必要です。 「 Git プロバイダーを Databricks に接続する」を参照してください。

リポジトリは 20 個の Webhook (GitHub Enterprise の場合は 250 個) に制限されています。

Azure DevOps

Azure DevOpsは、(Databricks 所有のアプリではなく) サービス フックを使用してデプロイをトリガーします。 Azure Databricksは、自動デプロイを有効にするユーザーの Git 資格情報を使用してサービス フックを作成します。

  • 自動デプロイを有効にするユーザーには、Azure DevOps リポジトリ用に構成された Git 資格情報が必要です。 「 Git プロバイダーを Databricks に接続する」を参照してください。
  • その認証情報には、Azure DevOps プロジェクトでサービス フックに対するサブスクリプションの編集アクセス許可が必要です。 プロジェクトのみを表示できる資格情報は、サービス フックを作成できません。

自動デプロイを有効にするには、Git プロバイダーとしてGitHubまたはAzure DevOpsを構成し、プッシュ イベントでの自動デプロイを有効にします。 これは、次のいずれかの場所で行うことができます。

Git 参照はブランチ名である必要があります。 タグは自動デプロイと互換性がありません。

注

アプリのサービス プリンシパルにリポジトリ用の Git 資格情報 がない場合、自動デプロイを有効にするときに、Azure Databricks によりそれを追加するよう求められます。 アクセスを承認すると自動デプロイが有効になりますが、アプリを起動するには手動で再デプロイする必要があります。

自動デプロイを無効にするには、既存のアプリで [自動デプロイ ] バッジをクリックし、 プッシュ イベントでの自動デプロイを無効にします。 [ アプリの設定] で設定を再構成することもできます。

Git のみのデプロイを適用する

ワークスペース管理者は、Git リポジトリからデプロイするために、ワークスペース内のすべてのアプリを要求できます。 > > に移動し、[Git からのアプリのデプロイのみを許可する] をオンにします。 この設定は既定ではオフになっています。

Git デプロイを適用する場合:

  • ユーザーは、アプリを作成する前に Git リポジトリを構成する必要があります。
  • ユーザーは Git からのみデプロイでき、ワークスペース フォルダーからはデプロイできません。
  • Databricks では、ワークスペース内のアプリ テンプレートが無効になります。
  • ユーザーは、Git リポジトリを含むアプリから削除することはできません。
  • 既存のアプリは引き続き実行されますが、アプリに Git リポジトリがない限り、ユーザーはデプロイまたは起動できません。

デプロイ後の動作

デプロイが完了すると、Azure Databricksはcommand ファイルで定義されたapp.yaml に基づいてアプリを起動するか、既定でpython app.py を実行します。 アプリの概要ページには、現在の状態が表示され、ログ、デプロイ履歴、環境情報にアクセスできます。

アプリのデプロイ後にアプリの概要ページを表示する

デプロイされたアプリの出力を表示するには、アプリのリンクをクリックします。

デバッグとランタイム監視の [ ログ ] タブに移動します。 Databricks アプリのログ記録と監視を参照してください。

アプリを更新または再デプロイする

ソース コードまたは構成を変更した後、アプリを再デプロイします。 再デプロイでは、アプリを再作成せずに最新の更新プログラムが適用されます。 ワークスペースまたは Git リポジトリからいつでも再デプロイできます。

ワークスペース フォルダーから再デプロイする

ワークスペース フォルダーから再デプロイするには:

  1. ワークスペース フォルダー内のアプリ ファイルを更新します。
  2. アプリを選択し、[ デプロイ] をクリックします。
  3. ソース コードのパスが変更された場合、または Git ソースから切り替える場合は、[ デプロイ ] の横にある矢印をクリックし、 別のソースを使用して [デプロイ] を選択します。

Git リポジトリから再デプロイする

Git リポジトリから再デプロイするには:

  1. 変更を Git リポジトリにプッシュします。
  2. Azure Databricks ワークスペースでアプリを選択し、Deploy をクリックします。 Git 参照が変更された場合、またはワークスペース ソースから切り替える場合は、[ デプロイ ] の横にある矢印をクリックし、 別のソースを使用して [デプロイ] を選択します。

CLI または API を使用して Git リポジトリを更新するには、 create-update コマンドを使用します。 アプリから Git リポジトリを削除すると、ワークスペースからのデプロイが強制されます。

Important

Git リポジトリを変更するか、デプロイ ソース (Git とワークスペース) を切り替えると、アプリのサービス プリンシパルのすべての Git 資格情報が削除されます。 Git 参照のみを変更しても、資格情報は削除されません。 Git から再デプロイする前に、資格情報を再構成する必要があります。

以前のバージョンに戻す

Databricks Apps には単一のロールバックアクションはありません。 ロールバックするには、以前の安定版アプリを再デプロイしてください。 手順は、アプリがGitリポジトリからデプロイされるかワークスペースフォルダからデプロイするかによって異なります。 ロールバックするバージョンを選ぶには、アプリ詳細ページの 「デプロイメント」 タブでアプリのデプロイ履歴を確認してください。 「Databricks アプリの詳細を確認する」を参照してください。

CLIからアプリのデプロイメントを一覧表示するには、以下を実行します:

databricks apps list-deployments my-app

Gitベースのアプリをロールバックする

もしアプリがGitリポジトリからデプロイされた場合は、希望するバージョンを含む以前のコミットやタグを再デプロイしてください。 Gitは正確なソースをピン留めするため、これが最も信頼性の高いロールバック方法です。

Databricks ユーザーインターフェース

  1. Azure Databricksのワークスペースで、アプリのアイコンをクリックします。App Switcherで「Databricks Apps」を選択し、次にアプリを選択します。
  2. 「 デプロイ 」の横にある矢印をクリックし、「 別のソースでデプロイ」を選択してください。
  3. 「 デプロイ作成」 ダイアログで「 From Git 」タブを選択してください。
  4. Git リファレンスでは、ブランチ名、タグ、またはコミット SHA (main、v1.0.0、コミット ハッシュなど) を入力します。
  5. [参照の種類] には、参照の種類 (ブランチ、タグ、コミットなど) を指定します。
  6. ソースコードパスについては、リポジトリにアプリコードのパスを入力します。
  7. [デプロイ] をクリックします。

Databricks コマンドラインインターフェース (CLI)

以前のコミットを再デプロイするには、以下を実行します:

databricks apps deploy my-app --json '{"git_source": {"commit": "<old-commit-sha>"}}'

タグを再デプロイするには、以下を実行します:

databricks apps deploy my-app --json '{"git_source": {"tag": "v1.0.0"}}'

Databricksは、Gitから本番環境アプリをデプロイし、各バージョンが特定のコミットやタグにマッピングされ、再デプロイできるようにすることを推奨しています。 Databricksアプリのベストプラクティスを参照してください。

ワークスペース ソース アプリをロールバックする

もしアプリがワークスペースフォルダからデプロイする場合は、元の安定版を再デプロイしてください。 アプリのソースはバージョン管理下に置き、 Git-backedアプリをロールバックする説明通り、安定したコミットやタグを再デプロイしてください。 バージョン管理下にないワークスペースフォルダからデプロイする場合は、元のソースの安定したコピーをそのフォルダに復元し、再デプロイしてください:

  1. ワークスペースフォルダ内のファイルをロールバックしたいバージョンに置き換えてください。
  2. アプリを選択し、「 デプロイ」をクリックし、そのフォルダからデプロイしてください。

最後に成功した展開と実行時期を特定するには、「 デプロイメント」 タブや databricks apps list-deploymentsをご利用ください。 Databricksは依存関係のバージョンをピン留めし、Gitからデプロイすることでロールバックを繰り返し行うことを推奨しています。 Databricksアプリのベストプラクティスを参照してください。

アプリ展開コマンドの全リストについては、コマンドグループapps参照してください。

デプロイに関する問題のトラブルシューティング

アプリのデプロイに失敗した場合、または予期したとおりに実行されない場合は、次のトラブルシューティング手順を試してください。

  • エラー メッセージまたはランタイム出力のログを確認します。
  • app.yaml の構文と設定を検証します。
  • env セクションのシークレットと環境変数が正しく解決されることを確認します。
  • 必要なすべての依存関係が含まれているか、インストールされていることを確認します。
  • ワークスペースでPrivate Linkまたは制限付きエグレス ネットワーク ポリシーを使用している場合は、必要なドメインが許可リストに登録されていることを確認します。 エグレス 許可リスト エントリが見つからないのは、Private Link環境でのデプロイ エラーの一般的な原因です。 Private Link 環境でのアプリのデプロイを参照してください。

Git リポジトリのデプロイの場合:

  • プライベート リポジトリの場合は、アプリのサービス プリンシパルに Git 資格情報が構成されていることを確認します。
  • Git リポジトリの URL が正しく、Git 参照 (ブランチ、タグ、またはコミット) がリポジトリに存在することを確認します。
  • ワークスペース管理者が Git のみのデプロイを適用する場合、Git リポジトリが構成されていない限り、アプリをデプロイまたは開始することはできません。
  • CLI、API、または宣言型オートメーション バンドルからデプロイする場合は、まずアプリを作成し、次に Git 資格情報をアプリのサービス プリンシパルに追加します。

その他のリソース