既定のパッケージ リポジトリを構成する

Important

DatabricksアプリのデフォルトPythonパッケージリポジトリの設定はベータ版です。 デフォルトのMavenパッケージリポジトリの設定は プライベートプレビューで行います。 Databricksのアカウントチームに連絡してアクセスを依頼してください。 その他の機能はすべて一般的に利用可能です。 ワークスペース管理者は、以下の設定を使って プレビュー ページからこれらの機能へのアクセスを制御できます:

  • Default Maven パッケージリポジトリ (Private Preview)
  • Databricks Apps のワークスペース リポジトリ構成を有効にする (ベータ)
  • Spark Declarative PipelinesにおけるデフォルトのPythonパッケージリポジトリ(一般公開)
  • APIで作成されたクラスタ内のデフォルトのPythonパッケージリポジトリ(一般公開)
  • UIで作成されたクラスタ内のデフォルトのPythonパッケージリポジトリ(一般公開)

ワークスペース管理者は、ワークスペース内のプライベートまたは認証済みのパッケージ リポジトリを、ノートブック、ジョブ、Lakeflow パイプライン、および Databricks Apps の既定のパッケージ リポジトリとして構成できます。 Pythonリポジトリはこれらすべてのワークロードに適用されます。 MavenリポジトリはDatabricks Runtime 18.3以降のクラスタスコープライブラリインストールに適用され、npmレジストリはDatabricksアプリにのみ適用されます。

ワークスペースが既定のパッケージ リポジトリで構成されている場合、ワークスペース内のユーザーは、Pythonのindex-url値やextra-index-url値、または npm のレジストリを明示的に定義することなく、内部リポジトリからパッケージをインストールできます。 これらの値がコード、ノートブック、またはアプリの app.yaml ファイルで指定されている場合は、ワークスペースの既定値よりも優先されます。 Databricks Apps の優先順位のしくみについては、「 ワークスペース レベルの既定のパッケージ リポジトリを使用 する」を参照してください。

この構成では、リポジトリの URL と資格情報を安全に格納および管理するために、Databricks シークレットを利用します。 ワークスペース管理者は、ワークスペース管理者設定ページを使用するか、定義済みのシークレット スコープと Databricks CLI シークレット コマンド または REST API を使用して、セットアップを構成できます。

ワークスペースの既定の依存関係を設定する

ワークスペース管理者は、ワークスペース管理者設定ページを使用して、既定のパッケージ リポジトリを追加または削除できます。

  1. ワークスペース管理者として、Databricks ワークスペースにログインします。
  2. Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] 選択します。
  3. [コンピュート] タブ をクリックします。
  4. 既定のパッケージ リポジトリ」の横にある「管理」をクリックします。
  5. (省略可能)Pythonインデックス URL、追加のインデックス URL、カスタム SSL 証明書、または npm レジストリ構成を追加または削除します。
  6. [保存] をクリックして変更を保存します。

Note

シークレットへの変更または削除は、ワークロードの種類によって異なる方法で適用されます。 サーバーレス ノートブックとジョブの場合、コンピューティング リソースをノートブックに再アタッチするか、ジョブを再実行した後に変更が適用されます。 従来のノートブックとジョブの場合、コンピューティング リソースの再起動後に変更が適用されます。 Lakeflow パイプラインの場合、変更は新しいパイプラインの実行に適用されます。 Databricks Apps の場合、次回アプリがビルドおよびデプロイされるときに変更が適用されます。

シークレット CLI または REST API を使用して設定する

CLI または REST API を使用して既定のパッケージ リポジトリを構成するには、定義済みのシークレット スコープを作成し、アクセス許可を構成してから、パッケージ リポジトリ シークレットを追加します。

定義済みのシークレット スコープ名

ワークスペース管理者は、指定されたシークレットスコープ上で、デフォルトのPIPインデックスURL、追加のインデックスURL、SSL証明書、Mavenリポジトリ、npm設定、認証トークンやシークレットを設定できます。

  • シークレット スコープ名: databricks-package-management
  • index-url のシークレット キー: pip-index-url
  • extra-index-urls のシークレット キー: pip-extra-index-urls
  • SSL 認定コンテンツのシークレット キー: pip-cert
  • Maven リポジトリのシークレット キー: maven-repositories(Databricks Runtime 18.3 以降でのクラスター スコープのライブラリ インストール)
  • npm 構成の秘密鍵: npm-rc (Databricks Apps のみ)

シークレット スコープを作成する

シークレット スコープは、Databricks CLI シークレット コマンドまたは REST API を使用して作成できます。 シークレット スコープを作成したら、すべてのワークスペース ユーザーに読み取りアクセス権を付与するようにアクセス制御リストを構成します。 これにより、リポジトリがセキュリティで引き続き保護されるとともに、個々のユーザーによる変更ができなくなります。 シークレット スコープでは、定義済みのシークレット スコープ名 databricks-package-management使用する必要があります。

databricks secrets create-scope databricks-package-management
databricks secrets put-acl databricks-package-management admins MANAGE
databricks secrets put-acl databricks-package-management users READ

パッケージ リポジトリ シークレットを追加する

定義済みのシークレット キー名を使用して、パッケージ リポジトリの詳細を追加します。 Pythonリポジトリはノートブック、ジョブ、Lakeflowパイプライン、Databricksアプリに適用されます。 MavenリポジトリはDatabricks Runtime 18.3以降のクラスタスコープライブラリインストールに適用され、npmレジストリはDatabricksアプリにのみ適用されます。

Python

定義済みの秘密鍵名を使用して Python パッケージ リポジトリの詳細を追加します。3 つのフィールドはすべて省略可能です。

# Add index URL.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-index-url", "string_value":"<index-url-value>"}'

# Add extra index URLs. If you have multiple extra index URLs, separate them using white space.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-extra-index-urls", "string_value":"<extra-index-url-1 extra-index-url-2>"}'

# Add cert content. If you want to pip configure a custom SSL certificate, put the cert file content here.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-cert", "string_value":"<cert-content>"}'

Note

リポジトリで認証が必要な場合は、インデックス URL に次のいずれかの形式を使用します。

  • ユーザー名とパスワード: https://<username>:<password>@<index_url>
  • トークン: https://<token>@<index_url>

Maven

Databricks Runtime 18.3以降でクラスタスコープのあるライブラリをインストールする場合、デフォルトのMavenパッケージリポジトリを設定できます。 ワークスペース管理者はプライマリリポジトリと最大5つの追加リポジトリを設定でき、それぞれにオプションのユーザー名、パスワード、領域があります。 プライマリリポジトリを設定すると、Maven Centralはリゾルバチェーンから削除されます。

リポジトリの設定を maven-repositories 秘密鍵の下にJSONドキュメントとして保存します。

databricks secrets put-secret databricks-package-management maven-repositories --string-value '<maven-repositories-json>'

JSONをシングルクォートで渡すと、シェルが内側のダブルクォートを保持します。 <maven-repositories-json>値は以下の形式です:

{
  "primary_repository": {
    "url": "<url>",
    "username": "<username>",
    "password": "<password>",
    "realm": "<realm>"
  },
  "additional_repositories": [
    {
      "url": "<url>"
    },
    {
      "url": "<url>",
      "username": "<username>",
      "password": "<password>"
    }
  ]
}

Node.js

Databricks Apps の場合は、既定の npm レジストリを構成して、アプリがワークスペースで構成されたレジストリからプライベート パッケージを含む Node.js パッケージをインストールするようにすることもできます。 レジストリ URL と認証トークンを含む、完全な .npmrc ファイルコンテンツを npm-rc 秘密鍵の下に格納します。

databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "npm-rc", "string_value":"registry=https://npm.example.com/\n//npm.example.com/:_authToken=<token>\n"}'

ワークスペース内のアプリがビルドされると、Azure Databricksはアプリの.npmrc ファイルにこのコンテンツを書き込みます。 優先順位のしくみと、特定のアプリに対してオーバーライドする方法については、 Node.js パッケージに関するページを参照してください。

パッケージ リポジトリ シークレットを変更または削除する

パッケージ リポジトリ シークレットを変更するには、 put-secret コマンドを使用します。 パッケージ リポジトリ シークレットを削除するには、次に示すように delete-secret を使用します。

# delete secret
databricks secrets delete-secret databricks-package-management pip-index-url

databricks secrets delete-secret databricks-package-management pip-extra-index-urls

databricks secrets delete-secret databricks-package-management pip-cert

# delete the Maven repositories secret
databricks secrets delete-secret databricks-package-management maven-repositories

# delete the npm configuration secret (Databricks Apps only)
databricks secrets delete-secret databricks-package-management npm-rc

# delete scope
databricks secrets delete-scope databricks-package-management