Databricks

Databricks Asset Bundlesで実現するアセット配布と環境差分管理

2026-03-26
更新: 2026-10-15
NicheeLab編集部
目次
  1. Declarative Automation Bundlesとは
  2. databricks.ymlの基本構造
  3. targets(環境)の設計
  4. 主要CLIコマンド
  5. 環境変数とシークレット管理
  6. Automation Bundles vs Terraform vs Repos 比較表
  7. 試験で問われるポイント
  8. 問題で確認
  9. よくある質問

Declarative Automation Bundlesは、ジョブ、DLTパイプライン、ノートブック、MLモデルなどの Databricksアセットをコードとして定義し、複数環境(dev / staging / prod)に一貫してデプロイするための仕組みです。 databricks.ymlファイルにアセットの構成を記述し、Databricks CLIのbundleコマンドで検証・デプロイ・実行・削除を行います。

この記事では、DABsの基本概念、databricks.ymlの構造、環境ごとのtargets設定、主要コマンド、そしてTerraformやReposとの使い分けを解説します。

Declarative Automation Bundlesとは

DABsは、Databricksの「Infrastructure as Code(IaC)+ Application as Code」を実現するツールです。 従来のDatabricks開発では、ジョブやパイプラインをUIで手動作成し、 環境間の移行(dev → staging → prod)も手動でコピーしていました。 DABsではこれらをYAMLファイルで定義し、Git管理 + CI/CDによる自動デプロイを実現します。

DABsが管理できるアセットは以下の通りです。

  • ジョブ(Workflows / Lakeflow Jobs)
  • DLTパイプライン(Lakeflow Spark Declarative Pipelinesパイプライン定義)
  • MLflow実験・モデル
  • ノートブック / Pythonスクリプト
  • ダッシュボード(Databricks SQL Dashboards)
  • スキーマ / ボリューム(UCオブジェクト)

databricks.ymlの基本構造

DABsのプロジェクトルートに配置するdatabricks.ymlは、以下の主要セクションで構成されます。

bundle:
  name: my-etl-pipeline

variables:
  catalog_name:
    description: "ターゲットカタログ"
    default: "dev_catalog"
  warehouse_id:
    description: "SQL Warehouse ID"

workspace:
  root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}

resources:
  jobs:
    daily_etl:
      name: "daily-etl-${bundle.target}"
      schedule:
        quartz_cron_expression: "0 0 2 * * ?"
        timezone_id: "Asia/Tokyo"
      tasks:
        - task_key: ingest
          notebook_task:
            notebook_path: ./src/ingest.py
          new_cluster:
            spark_version: "14.3.x-scala2.12"
            num_workers: 4
            node_type_id: "i3.xlarge"
        - task_key: transform
          depends_on:
            - task_key: ingest
          notebook_task:
            notebook_path: ./src/transform.py
          new_cluster:
            spark_version: "14.3.x-scala2.12"
            num_workers: 8

  pipelines:
    dlt_pipeline:
      name: "dlt-pipeline-${bundle.target}"
      target: "${var.catalog_name}.bronze"
      libraries:
        - notebook:
            path: ./src/dlt_definitions.py

targets:
  dev:
    mode: development
    default: true
    variables:
      catalog_name: "dev_catalog"
  staging:
    variables:
      catalog_name: "staging_catalog"
  prod:
    mode: production
    variables:
      catalog_name: "prod_catalog"
    run_as:
      service_principal_name: "prod-deployer-sp"

targets(環境)の設計

targetsセクションは、同一のアセット定義を異なる環境にデプロイするための仕組みです。各targetでvariables、権限、実行ユーザー(run_as)をオーバーライドできます。

target属性説明dev向け設定例prod向け設定例
modedevelopment / productiondevelopment(プレフィックス付加、権限制限)production(run_as必須、本番権限)
variables環境固有の変数値catalog_name: dev_catalogcatalog_name: prod_catalog
run_asアセットの実行アイデンティティ省略(デプロイユーザー)service_principal_name指定
workspace.host対象ワークスペースURLdev-workspace.cloud.databricks.comprod-workspace.cloud.databricks.com
defaultデフォルトtargetかどうかtrue省略(false)

developmentモードでは、リソース名に[dev ユーザー名]のプレフィックスが自動付加されるため、 複数開発者が同じワークスペースでバンドルをデプロイしても名前が衝突しません。 productionモードではrun_asの指定が必須で、サービスプリンシパルで実行するのがベストプラクティスです。

主要CLIコマンド

コマンド説明主な用途
databricks bundle validatedatabricks.ymlの構文・参照チェックCI/CDのPRチェック、ローカル検証
databricks bundle deploy -t dev指定targetにアセットをデプロイジョブ / DLTパイプラインの作成・更新
databricks bundle run -t dev daily_etlデプロイ済みジョブを即時実行動作確認、手動トリガー
databricks bundle destroy -t devデプロイしたアセットを全削除検証環境のクリーンアップ
databricks bundle summaryデプロイ内容のサマリ表示デプロイ前の最終確認

環境変数とシークレット管理

variablesはdatabricks.yml内で定義し、targetsごとにデフォルト値をオーバーライドするか、CLI実行時に--varフラグで注入します。

# CLI実行時に変数を注入
databricks bundle deploy -t prod --var="catalog_name=prod_catalog"

# CI/CDパイプライン(GitHub Actions)での例
- name: Deploy to prod
  run: |
    databricks bundle deploy -t prod \
      --var="catalog_name=${{ secrets.PROD_CATALOG }}" \
      --var="warehouse_id=${{ secrets.PROD_WAREHOUSE_ID }}"

シークレット(パスワード、APIキーなど)はdatabricks.ymlには記述せず、DatabricksのSecret Scopeに保存し、ノートブック内でdbutils.secrets.getで取得するのがベストプラクティスです。

Automation Bundles vs Terraform vs Repos 比較表

比較項目Declarative Automation BundlesTerraformRepos(Git連携)
主な対象ジョブ / Lakeflow Spark Declarative Pipelines / ノートブック / MLモデルワークスペース / クラスタポリシー / UC / ネットワークノートブック / Pythonファイルのバージョン管理
定義言語YAML(databricks.yml)HCL(.tf)Git管理のみ(宣言的定義なし)
環境差分管理targets + variablesworkspaces + tfvarsブランチベース(手動切替)
状態管理Databricksワークスペース側で管理S3 / Azure Blob / Terraform Cloudで管理なし(Gitの履歴のみ)
CI/CD統合Databricks CLI + GitHub Actions / Azure DevOpsterraform plan/apply + CI/CDツールGit Push → 自動同期
削除管理bundle destroyで一括削除terraform destroyで一括削除手動削除のみ
学習コスト低(YAML + Databricks CLI)中〜高(HCL + 状態管理の理解)低(Git操作のみ)

試験で問われるポイント

Declarative Automation Bundles(旧Databricks Asset Bundles)は、Data Engineer Associate(セクション5「Implementing CI/CD」)とData Engineer Professional(セクション1と、セクション8「Debugging and Deploying」)の試験ガイドに明記されています。ML Professionalの試験ガイドにも、DABsでモデルサービングエンドポイント・MLflow実験・登録済みモデルを定義・構成する目標があります。

  • 「ジョブとDLTパイプラインをdev/staging/prodに一貫してデプロイするには?」→ Automation Bundles(targets設定)
  • 「databricks.ymlで環境ごとにカタログ名を切り替えるには?」→ variables + targetsでオーバーライド
  • 「本番デプロイでジョブの実行ユーザーを固定するには?」→ run_asでサービスプリンシパルを指定
  • 「TerraformとDABsの使い分けは?」→ インフラ基盤はTerraform、アプリケーションアセットはDABs

問題で確認

Data Engineer Professional

問題 1

チームがDatabricksのETLジョブとDLTパイプラインを開発環境で作成し、本番環境に安全にデプロイしたい。本番ではサービスプリンシパルで実行し、カタログ名を切り替える必要がある。最も適切なアプローチはどれか。

  1. 開発環境でジョブをUIで作成し、Export/Importで本番にコピーする
  2. Declarative Automation Bundlesでdatabricks.ymlにジョブとDLTを定義し、targets(dev/prod)でカタログ名とrun_asを切り替えてデプロイする
  3. Terraformでジョブリソースを定義し、terraform applyで各環境にデプロイする
  4. Databricks Git FoldersでGitからノートブックを同期し、手動でジョブを作成する

正解: B

DABsはジョブとDLTパイプラインの環境間デプロイに最適化されたツールです。targets設定でカタログ名をvariablesで切り替え、run_asでサービスプリンシパルを指定できます。UIコピーは手動で漏れやすく、Terraformはインフラ層向き(ジョブ定義もできるがDABsの方がDatabricksアセットに特化)、Reposはバージョン管理のみでジョブ定義は含まれません。

よくある質問

Declarative Automation Bundles (旧 Databricks Asset Bundles)とTerraformはどう使い分けますか?

DABsは「ジョブ・パイプライン・ノートブック」などDatabricksアセットの配布と環境差分管理に特化したツールです。一方Terraformは「ワークスペース・クラスタポリシー・ネットワーク・UCメタストア」などインフラレベルのリソース管理に適しています。実務では、インフラ基盤はTerraformで構築し、その上で動くアプリケーションアセット(ジョブ / DLTパイプライン / MLモデルなど)はDABsで管理する二層構成が推奨されます。

databricks.ymlの環境変数はどこで定義しますか?

targetsセクション内でvariablesブロックを使って環境ごとに値を切り替えます。例えばdev/staging/prodでカタログ名やクラスタサイズを変えたい場合、variablesにcatalog_nameを定義し、各targetでデフォルト値をオーバーライドします。CI/CDパイプラインでは--var フラグでコマンドラインから注入することも可能です。

DABsでデプロイしたアセットを完全に削除するにはどうしますか?

databricks bundle destroyコマンドを使います。このコマンドはbundleが管理するすべてのアセット(ジョブ、DLTパイプライン、デプロイされたノートブックなど)をワークスペースから削除します。ただし、ジョブが生成したデータ(Deltaテーブルなど)は削除されません。--auto-approveフラグを付けると確認プロンプトをスキップできますが、本番環境では手動確認が推奨です。

この記事の内容を、基礎から読む

出題範囲を体系的に扱う教科書があります。全 16 章、登録なしで全部読めます。

教科書の目次をすべて見る →
この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全8試験・難易度・勉強法

Databricks認定資格(全8試験)の一覧・出題範囲・合格ライン・難易度を徹底解説。2026年10月時点の公式情報に...

Databricks

Databricks試験の難易度ランキング|7資格を徹底比較

Databricks認定試験のうち7資格の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。2026年5月版...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。2026年...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.