コンピュート・ポリシー・リファレンス

この記事は、コンピュート ポリシー定義のリファレンスです。 記事には、使用可能なポリシー属性と制限タイプのリファレンスが含まれています。 一般的なユースケースで参照できるサンプルポリシーもあります。

ポリシー定義とは

ポリシー定義は、JSON で表される個々のポリシー ルールです。 定義では、 クラスター API で制御される任意の属性にルールを追加できます。 例えば、これらの定義はデフォルトの自動終了時間を設定し、ユーザーがプールを使用することを禁止し、Photonの使用を強制します。

{
   "autotermination_minutes" : {
    "type" : "unlimited",
    "defaultValue" : 4320,
    "isOptional" : true
  },
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "runtime_engine": {
    "type": "fixed",
    "value": "PHOTON",
    "hidden": true
  }
}

属性ごとに設定できる制限は 1 つだけです。 属性のパスは、API 属性名を反映します。 ネストされた属性の場合、パスはネストされた属性名をドットを使用して連結します。 ポリシー定義で定義されていない属性は制限されません。

サポートされている属性

ポリシーは、 クラスター API で制御されるすべての属性をサポートします。 属性に設定できる制限の種類は、属性の種類と UI 要素との関係に基づいて、設定ごとに異なる場合があります。 ポリシーを使用してコンピュートのアクセス許可を定義することはできません。

また、ポリシーを使用して、時間あたりの最大 DBU 数とクラスターの種類を設定することもできます。 仮想属性のパスを参照してください。

次の表に、サポートされているポリシー属性パスを示します。

属性パス

タイプ

説明

autoscale.max_workers

オプションの番号

非表示にすると、UI から最大ワーカー数フィールドが削除されます。

autoscale.min_workers

オプションの番号

非表示にすると、UI から最小ワーカー番号フィールドが削除されます。

autotermination_minutes

値 0 は、自動終了がないことを表します。 非表示にすると、自動終了チェックボックスと値入力が UI から削除されます。

aws_attributes.availability

string

AWS の可用性を制御します (SPOTON_DEMAND、または SPOT_WITH_FALLBACK)

aws_attributes.ebs_volume_count

AWS EBS ボリュームの数。

aws_attributes.ebs_volume_size

AWS EBS ボリュームのサイズ (GiB 単位)。

aws_attributes.ebs_volume_type

string

AWS EBS ボリュームのタイプ。

aws_attributes.first_on_demand

オンデマンドインスタンスに配置するノードの数を制御します。

aws_attributes.instance_profile_arn

string

AWS インスタンスプロファイルを制御します。

aws_attributes.spot_bid_price_percent

AWS スポットインスタンスの上限価格を制御します。

aws_attributes.zone_id

string

AWS ゾーン ID を制御します。

cluster_log_conf.path

string

ログ ファイルのリンク先 URL。

cluster_log_conf.region

string

S3 の場所のリージョン。

cluster_log_conf.type

S3、DBFS、またはなし

ログの保存先の種類。

cluster_name

string

クラスター名。

custom_tags.*

string

タグ名を追加して特定のタグ値を制御します (例: custom_tags.<mytag>)。

data_security_mode

string

クラスターのアクセスモードを設定します。 Unity Catalog には、 SINGLE_USER または USER_ISOLATION (UI の共有アクセス モード) が必要です。 値 NONE は、セキュリティ機能が有効になっていないことを意味します。

docker_image.basic_auth.password

string

Databricks Container Servicesイメージ基本認証のパスワード。

docker_image.basic_auth.username

string

Databricks Container Services イメージ基本認証のユーザー名。

docker_image.url

string

Databricks Container Services画像の URL を制御します。非表示にすると、UI から Databricks Container Services セクションが削除されます。

driver_node_type_id

省略可能な文字列

非表示にすると、ドライバー ノードの種類の選択が UI から削除されます。

enable_elastic_disk

ブーリアン

非表示にすると、UI から [ オートスケール ローカル ストレージを有効にする ] チェック ボックスが削除されます。

enable_local_disk_encryption

ブーリアン

(API で指定false) クラスターにローカルに接続されているディスクの暗号化を有効にするには [true] に設定し、無効にするには [] に設定します。

init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.s3.destination init_scripts.*.file.destination init_scripts.*.s3.region

string

* 属性配列内の initスクリプトのインデックスを参照します。 配列属性のポリシーの記述を参照してください。

instance_pool_id

string

ワーカー ノードも定義されている場合はワーカー ノードが使用するプールを制御し driver_instance_pool_id それ以外の場合はすべてのクラスター ノードによって使用されます。 ワーカー ノードにプールを使用する場合は、ドライバー ノードにもプールを使用する必要があります。 非表示にすると、プールの選択が UI から削除されます。

driver_instance_pool_id

string

指定した場合、ドライバー ノードとワーカー ノードに異なるプールを構成します。 指定しない場合は、 instance_pool_idを継承します。 ワーカー ノードにプールを使用する場合は、ドライバー ノードにもプールを使用する必要があります。 非表示にすると、ドライバー プールの選択が UI から削除されます。

node_type_id

string

非表示にすると、ワーカー ノードの種類の選択が UI から削除されます。

num_workers

オプションの番号

非表示にすると、UI からワーカー番号の指定が削除されます。

runtime_engine

string

クラスターがPhotonを使用するかどうかを決定します。 可能な値は PHOTON または STANDARDです。

single_user_name

string

資格情報パススルー シングル ユーザー アクセスのユーザー名。

spark_conf.*

省略可能な文字列

コンフィギュレーション キー名を追加して、特定のコンフィギュレーション値を制御します。 たとえば、 spark_conf.spark.executor.memory.

spark_env_vars.*

省略可能な文字列

特定の Spark 環境変数の値を制御するには、環境変数を追加します (例: spark_env_vars.<environment variable name>)。

spark_version

string

API ( Databricks Runtime ) を通じて指定された Spark イメージのバージョン名。 Databricks Runtimeを動的に選択する特別なポリシー値を使用することもできます。 Databricks Runtime選択に関する特別なポリシー値」を参照してください。

ssh_public_keys.*

string

* は、属性配列内の公開鍵のインデックスを参照します。 配列属性のポリシーの記述を参照してください。

workload_type.clients.jobs

ブーリアン

コンピュート資源をジョブに使用できるかどうかを定義します。 コン ピュートがジョブで使用されないようにするを参照してください。

workload_type.clients.notebooks

ブーリアン

コンピュート リソースをノートブックで使用できるかどうかを定義します。 コン ピュートがジョブで使用されないようにするを参照してください。

仮想属性パス

次の表に、ポリシーでサポートされる 2 つの追加の合成属性を示します。

属性パス

タイプ

説明

dbus_per_hour

リソースが時間単位で使用できる最大 DBU を表す計算属性 (ドライバー ノードを含む)。 このメトリクスは、個々のコンピュートレベルでコストを制御する直接的な方法です。 範囲制限付きで使用します。

cluster_type

string

作成できるクラスターの種類を表します。

指定した種類のコンピュートをポリシーから作成することを許可またはブロックします。 all-purpose値が許可されていない場合、ポリシーは汎用作成コンピュート UI に表示されません。job値が許可されていない場合、ポリシーはジョブの作成コンピュート UI に表示されません。

Databricks Runtime選択の特別なポリシー値

spark_version 属性は、サポートされているDatabricks Runtimeバージョンの現在のセットに基づいて、 Databricks Runtimeバージョンに動的にマッピングされる特別な値をサポートします。

spark_version 属性では、次の値を使用できます。

  • auto:latest: 最新の GA Databricks Runtime バージョンにマップされます。

  • auto:latest-ml: 最新の Databricks Runtime 機械学習バージョンにマップされます。

  • auto:latest-lts: 最新の長期サポート (LTS) Databricks Runtime バージョンにマップされます。

  • auto:latest-lts-ml: 最新の LTS Databricks Runtime 機械学習バージョンにマッピングされます。

  • auto:prev-major: 2 番目に新しい GA Databricks Runtime バージョンにマップされます。 たとえば、 auto:latest が 14.2 の場合、 auto:prev-major は 13.3 です。

  • auto:prev-major-ml: 2 番目に新しい GA Databricks Runtime 機械学習バージョンにマップされます。 たとえば、 auto:latest が 14.2 の場合、 auto:prev-major は 13.3 です。

  • auto:prev-lts: 2 番目に新しい LTS Databricks Runtime バージョンにマップされます。 たとえば、 auto:latest-lts が 13.3 の場合、 auto:prev-lts は 12.2 です。

  • auto:prev-lts-ml: 2 番目に新しい LTS Databricks Runtime 機械学習バージョンにマップされます。 たとえば、 auto:latest-lts が 13.3 の場合、 auto:prev-lts は 12.2 です。

注:

これらの値を使用すると、新しいランタイム バージョンがリリースされたときにコンピュートが自動更新されません。 Databricks Runtime バージョンを変更するには、ユーザーがコンピュートを明示的に編集する必要があります。

サポートされているポリシーの種類

このセクションには、使用可能な各ポリシーの種類のリファレンスが含まれています。 ポリシーの種類には、固定ポリシーと制限ポリシーの 2 つのカテゴリがあります。

固定ポリシーにより、属性に対するユーザー構成が禁止されます。 固定ポリシーには、次の 2 種類があります。

制限ポリシーは、属性を構成するためのユーザーのオプションを制限します。 制限ポリシーでは、デフォルト値を設定したり、属性をオプションにしたりすることもできます。 「追加の制限ポリシーフィールド」を参照してください。

ポリシーを制限するためのオプションは次のとおりです。

固定ポリシー

固定ポリシーは、属性を指定された値に制限します。 数値と Boolean以外の属性値の場合、値は文字列で表されるか、文字列に変換できる必要があります。

固定ポリシーでは、[ hidden ] フィールドを [ true] に設定することで、UI から属性を非表示にすることもできます。

interface FixedPolicy {
    type: "fixed";
    value: string | number | boolean;
    hidden?: boolean;
}

このポリシー例では、 Databricks Runtime バージョンを修正し、ユーザーの UI からフィールドを非表示にします。

{
  "spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}

禁止されているポリシー

禁止ポリシーは、ユーザーが属性を構成できないようにします。 禁止ポリシーは、オプションの属性とのみ互換性があります。

interface ForbiddenPolicy {
    type: "forbidden";
}

このポリシーは、ワーカー ノードのコンピュートにプールをアタッチすることを禁止します。 driver_instance_pool_id はポリシーを継承するため、ドライバー ノードに対してもプールは禁止されています。

{
  "instance_pool_id": { "type": "forbidden" }
}

許可リストポリシー

許可リストポリシーは、属性を設定するときにユーザーが選択できる値のリストを指定します。

interface AllowlistPolicy {
  type: "allowlist";
  values: (string | number | boolean)[];
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

この許可リストの例では、ユーザーは 2 つの Databricks Runtime バージョンから選択できます。

{
  "spark_version":  { "type": "allowlist", "values": [ "13.3.x-scala2.12", "12.2.x-scala2.12" ] }
}

ブロックリストポリシー

ブロックリスト ポリシーには、許可されていない値が一覧表示されます。 値は完全に一致する必要があるため、属性が値の表示方法に寛大である場合 (たとえば、先頭と末尾のスペースを許可する場合)、このポリシーは期待どおりに機能しない可能性があります。

interface BlocklistPolicy {
  type: "blocklist";
  values: (string | number | boolean)[];
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

この例では、ユーザーが Databricks Runtimeとして 7.3.x-scala2.12 を選択できないようにします。

{
  "spark_version":  { "type": "blocklist", "values": [ "7.3.x-scala2.12" ] }
}

正規表現ポリシー

正規表現ポリシーは、使用可能な値を正規表現に一致する値に制限します。 安全のため、正規表現が文字列値の先頭と末尾に固定されていることを確認してください。

interface RegexPolicy {
  type: "regex";
  pattern: string;
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

この例では、ユーザーが選択できるバージョン Databricks Runtime を制限します。

{
  "spark_version":  { "type": "regex", "pattern": "13\\.[3456].*" }
}

範囲ポリシー

範囲ポリシーは、 minValue フィールドと maxValue フィールドを使用して、指定された範囲に値を制限します。 値は 10 進数でなければなりません。 数値制限は、倍精度浮動小数点値として表現できる必要があります。 特定の制限がないことを示すために、 minValue または maxValueのいずれかを省略できます。

interface RangePolicy {
  type: "range";
  minValue?: number;
  maxValue?: number;
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

この例では、ワーカーの最大数を 10 に制限します。

{
  "num_workers":  { "type": "range", "maxValue": 10 }
}

無制限のポリシー

unlimited ポリシーは、属性を必須にしたり、UI で既定の値を設定したりするために使用されます。

interface UnlimitedPolicy {
  type: "unlimited";
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

この例では、 COST_BUCKET タグをコンピュートに追加します。

{
  "custom_tags.COST_BUCKET":  { "type": "unlimited" }
}

Spark 構成変数のデフォルト値を設定するが、省略 (削除) もできるようにするには、次のようにします。

{
  "spark_conf.spark.my.conf":  { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}

追加の制限ポリシーフィールド

ポリシーの種類を制限するには、次の 2 つの追加フィールドを指定できます。

  • defaultValue - 作成コンピュート UI に自動的に入力される値。

  • isOptional - 属性の制限ポリシーにより、自動的に必須になります。 属性をオプションにするには、 isOptional フィールドを trueに設定します。

注:

デフォルトの値は、 クラスター API で作成されたコンピュートに自動的に適用されません。 API を使用してデフォルトの値を適用するには、コンピュート定義にパラメーター apply_policy_default_values を追加し、 trueに設定します。

このポリシー例では、ワーカーノードのプールのデフォルト値 id1 を指定しますが、オプションにします。 コンピュートを作成するときに、別のプールを選択するか、使用しないことを選択できます。 ポリシーで driver_instance_pool_id が定義されていない場合、またはコンピュートの作成時に、ワーカー ノードとドライバー ノードに同じプールが使用されます。

{
  "instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}

配列属性のポリシーの記述

配列属性のポリシーは、次の 2 つの方法で指定できます。

  • すべての配列要素に対する一般的な制限。 これらの制限では、ポリシーパスで * ワイルドカード記号が使用されます。

  • 特定のインデックス位置にある配列要素に対する特定の制限。 これらの制限では、パスに数値を使用します。

例えば、array 属性 init_scriptsの場合、総称パスは init_scripts.* で始まり、特定のパスは init_scripts.<n>で始まります。ここで、 <n> は配列内の整数インデックス (0 から始まる) です。 ジェネリック制限と特定の制限を組み合わせることができ、その場合、ジェネリック制限は特定の制限を持たない各配列要素に適用されます。 いずれの場合も、適用されるポリシーの制限は 1 つだけです。

次のセクションでは、配列属性を使用する一般的な例を示します。

包含固有のエントリが必要

順序を指定せずに特定の値を要求することはできません。 例えば:

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-1>"
  },
  "init_scripts.1.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-2>"
  }
}

リスト全体の固定値を要求する

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-1>"
  },
  "init_scripts.*.volumes.destination": {
    "type": "forbidden"
  }
}

使用を完全に禁止する

{
   "init_scripts.*.volumes.destination": {
    "type": "forbidden"
  }
}

特定の制限に従うエントリを許可する

{
    "init_scripts.*.volumes.destination": {
    "type": "regex",
    "pattern": ".*<required-content>.*"
  }
}

initスクリプトの特定のセットを修正する

init_scriptsパスの場合、配列には、ユースケースに応じてすべての可能なバリアントを処理する必要がある複数の構造体の1つを含めることができます。たとえば、initScript の特定のセットを要求し、他のバージョンのバリアントを禁止するには、次のパターンを使用できます。

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<volume-paths>"
  },
  "init_scripts.1.volumes.destination": {
    "type": "fixed",
    "value": "<volume-paths>"
  },
  "init_scripts.*.workspace.destination": {
    "type": "forbidden"
  },
  "init_scripts.*.s3.destination": {
    "type": "forbidden"
  },
  "init_scripts.*.file.destination": {
    "type": "forbidden"
  }
}

ポリシーの例

この項では、独自のポリシーを作成するための参照として使用できるポリシーの例を示します。 また、Databricks が提供するポリシー ファミリを、一般的な ポリシー のユース ケースのテンプレートとして使用することもできます。

一般的なコンピュートポリシー

汎用のコンピュートポリシーは、ユーザーをガイドし、一部の機能を制限すると同時に、タグを要求し、インスタンスの最大数を制限し、タイムアウトを強制することを目的としています。

{
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "spark_version": {
    "type": "unlimited",
    "defaultValue": "auto:latest-ml"
  },
  "node_type_id": {
    "type": "allowlist",
    "values": [
      "i3.xlarge",
      "i3.2xlarge",
      "i3.4xlarge"
    ],
    "defaultValue": "i3.2xlarge"
  },
  "driver_node_type_id": {
    "type": "fixed",
    "value": "i3.2xlarge",
    "hidden": true
  },
  "autoscale.min_workers": {
    "type": "fixed",
    "value": 1,
    "hidden": true
  },
  "autoscale.max_workers": {
    "type": "range",
    "maxValue": 25,
    "defaultValue": 5
  },
  "enable_elastic_disk": {
    "type": "fixed",
    "value": true,
    "hidden": true
  },
  "autotermination_minutes": {
    "type": "fixed",
    "value": 30,
    "hidden": true
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}

Delta Live Tablesパイプラインの制限を定義する コンピュート

注:

ポリシーを使用してコンピュート Delta Live Tables を構成する場合、Databricks では、defaultmaintenanceコンピュートの両方に 1 つのポリシーを適用することをお勧めします。

パイプラインコンピュートのポリシーを設定するには、[ cluster_type ] フィールドを [ dlt] に設定してポリシーを作成します。 次の例では、デルタ ライブ テーブル コンピュートの最小ポリシーを作成します。

{
  "cluster_type": {
    "type": "fixed",
    "value": "dlt"
  },
  "num_workers": {
    "type": "unlimited",
    "defaultValue": 3,
    "isOptional": true
  },
  "node_type_id": {
    "type": "unlimited",
    "isOptional": true
  },
  "spark_version": {
    "type": "unlimited",
    "hidden": true
  }
}

シンプルな中規模ポリシー

ユーザーが最小限の構成で中型のコンピュートを作成できるようにします。 作成時に必須フィールドはコンピュート名のみです。残りは固定され、非表示になります。

{
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "spark_conf.spark.databricks.cluster.profile": {
    "type": "forbidden",
    "hidden": true
  },
  "autoscale.min_workers": {
    "type": "fixed",
    "value": 1,
    "hidden": true
  },
  "autoscale.max_workers": {
    "type": "fixed",
    "value": 10,
    "hidden": true
  },
  "autotermination_minutes": {
    "type": "fixed",
    "value": 60,
    "hidden": true
  },
  "node_type_id": {
    "type": "fixed",
    "value": "i3.xlarge",
    "hidden": true
  },
  "driver_node_type_id": {
    "type": "fixed",
    "value": "i3.xlarge",
    "hidden": true
  },
  "spark_version": {
    "type": "fixed",
    "value": "auto:latest-ml",
    "hidden": true
  },
  "enable_elastic_disk": {
    "type": "fixed",
    "value": false,
    "hidden": true
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}

ジョブ専用ポリシー

ユーザーがジョブを実行するためのジョブコンピュートを作成できるようにします。 ユーザーは、このポリシーを使用して汎用コンピュートを作成することはできません。

{
  "cluster_type": {
    "type": "fixed",
    "value": "job"
  },
  "dbus_per_hour": {
    "type": "range",
    "maxValue": 100
  },
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "num_workers": {
    "type": "range",
    "minValue": 1
  },
  "node_type_id": {
    "type": "regex",
    "pattern": "[rmci][3-5][rnad]*.[0-8]{0,1}xlarge"
  },
  "driver_node_type_id": {
    "type": "regex",
    "pattern": "[rmci][3-5][rnad]*.[0-8]{0,1}xlarge"
  },
  "spark_version": {
    "type": "unlimited",
    "defaultValue": "auto:latest-lts"
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}

外部メタストア ポリシー

管理者が定義したメタストアが既にアタッチされている状態でコンピュートを作成できるようにします。 これは、ユーザーが追加の構成を必要とせずに独自のコンピュートを作成できるようにする場合に便利です。

{
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
      "type": "fixed",
      "value": "jdbc:sqlserver://<jdbc-url>"
  },
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
      "type": "fixed",
      "value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
  },
  "spark_conf.spark.databricks.delta.preview.enabled": {
      "type": "fixed",
      "value": "true"
  },
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
      "type": "fixed",
      "value": "<metastore-user>"
  },
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
      "type": "fixed",
      "value": "<metastore-password>"
  }
}

コンピュートがジョブで使用されないようにする

このポリシーにより、ユーザーはコンピュートを使用してジョブを実行できなくなります。 ユーザーはノートブックでのみコンピュートを使用できます。

{
  "workload_type.clients.notebooks": {
    "type": "fixed",
    "value": true
  },
  "workload_type.clients.jobs": {
    "type": "fixed",
    "value": false
  }
}

オートスケール ポリシーを削除する

このポリシーは、オートスケールを無効にし、ユーザーが特定の範囲内のワーカーの数を設定できるようにします。

{
  "num_workers": {
  "type": "range",
  "maxValue": 25,
  "minValue": 1,
  "defaultValue": 5
  }
}

カスタムタグの適用

コンピュート タグ ルールをポリシーに追加するには、 custom_tags.<tag-name>属性を使用します。

たとえば、このポリシーを使用するユーザーは、コンピュートを起動するには、 COST_CENTERタグに 9999、9921、または 9531 を入力する必要があります。

   {"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}