LakebaseオートスケールAPIガイド
Lakebase オートスケールは次のリージョンで利用できます: us-east-1 、 us-east-2 、 eu-central-1 、 eu-west-1 、 eu-west-2 、 ap-south-1 、 ap-southeast-1 、 ap-southeast-2 。
Lakebase オートスケールは、オートスケール コンピュート、ゼロへのスケール、分岐、即時復元を備えた Lakebase の最新バージョンです。 Lakebase プロビジョニングとの機能の比較については、 「バージョン間の選択」を参照してください。
このページでは、認証、利用可能なエンドポイント、 REST API 、 Databricks CLI 、 Databricks SDK ( Python 、 Java 、Go)、およびTerraformを操作するための一般的なパターンなど、Lakebase オートスケールAPIの概要について説明します。
完全な API リファレンスについては、 Postgres API ドキュメントを参照してください。
Lakebase Postgres API は ベータ版 です。APIエンドポイント、問題、および動作は変更される可能性があります。
認証
Lakebase オートスケールAPI 、プロジェクト インフラストラクチャの管理 (プロジェクトの作成、設定の構成など) に ワークスペース レベルのOAuth認証を 使用します。
2 種類の接続 : このAPIは プラットフォーム管理 (プロジェクト、ブランチ、コンピュートの作成) 用です。 データベース アクセス (クエリ データへの接続) の場合:
- SQL クライアント (psql、pgAdmin、DBeaver): LakeBase OAuth トークンまたは Postgres パスワードを使用します。認証を参照してください。
- データ API (RESTful HTTP): LakeBase OAuth トークンを使用します。データ API を参照してください。
- プログラミング言語ドライバー (psycopg、SQLAlchemy、JDBC): LakeBase OAuth トークンまたは Postgres パスワードを使用します。クイックスタートを参照してください。
これら 2 つの認証レイヤーの詳細な説明については、 「認証アーキテクチャ」を参照してください。
認証を設定する
Databricks CLI を使用して認証します。
databricks auth login --host https://your-workspace.cloud.databricks.com
ブラウザのプロンプトに従ってログインします。CLI は OAuth トークンを~/.databricks/token-cache.jsonにキャッシュします。
次にアクセス方法を選択します。
- Python SDK
- Java SDK
- CLI
- curl
SDK は統合認証を使用し、OAuth トークンを自動的に処理します。
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
SDK は統合認証を使用し、OAuth トークンを自動的に処理します。
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
コマンドはキャッシュされたトークンを自動的に使用します。
databricks postgres list-projects
直接 API 呼び出し用のトークンを生成します。
export DATABRICKS_TOKEN=$(databricks auth token | jq -r .access_token)
curl -X GET "https://your-workspace.cloud.databricks.com/api/2.0/postgres/projects" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
OAuth トークンは 1 時間後に期限切れになります。必要に応じて再生してください。
詳細については、 「OAuth を使用して Databricks へのユーザー アクセスを承認する」を参照してください。
利用可能なエンドポイント(ベータ版)
すべてのエンドポイントは基本パス/api/2.0/postgres/を使用します。
プロジェクト
オペレーション | 手法 | エンドポイント | ドキュメント |
|---|---|---|---|
プロジェクトを作成 |
|
| |
プロジェクトを更新 |
|
| |
プロジェクトを削除 |
|
| |
プロジェクトを取得 |
|
| |
プロジェクトの一覧 |
|
|
ブランチ
オペレーション | 手法 | エンドポイント | ドキュメント |
|---|---|---|---|
ブランチを作成 |
|
| |
ブランチを更新 |
|
| |
ブランチを削除 |
|
| |
ブランチを取得 |
|
| |
ブランチを一覧表示する |
|
|
エンドポイント (コンピュートとリードレプリカ)
オペレーション | 手法 | エンドポイント | ドキュメント |
|---|---|---|---|
エンドポイントを作成 |
|
| |
エンドポイントを更新 |
|
| |
エンドポイントを削除 |
|
| |
エンドポイントを取得 |
|
| |
エンドポイントを一覧表示する |
|
|
データベース資格情報
オペレーション | 手法 | エンドポイント | ドキュメント |
|---|---|---|---|
データベース資格情報を生成する |
|
|
オペレーション
オペレーション | 手法 | エンドポイント | ドキュメント |
|---|---|---|---|
取得操作 |
|
|
取得操作
リソース名で長時間実行操作のステータスを確認します。
- Python SDK
- Java SDK
- CLI
- curl
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Start an operation (example: create project)
operation = w.postgres.create_project(...)
print(f"Operation started: {operation.name}")
# Wait for completion
result = operation.wait()
print(f"Operation completed: {result.name}")
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
WorkspaceClient w = new WorkspaceClient();
// Start an operation (example: create project)
CreateProjectOperation operation = w.postgres().createProject(...);
System.out.println("Operation started: " + operation.getName());
// Wait for completion
Project result = operation.waitForCompletion();
System.out.println("Operation completed: " + result.getName());
デフォルトでは、CLI は操作が完了するまで自動的に待機します。ポーリングをスキップするには--no-waitを使用します:
# Create project without waiting
databricks postgres create-project --no-wait ...
# Later, check the operation status
databricks postgres get-operation projects/my-project/operations/abc123
# Get operation status
curl -X GET "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
応答形式:
{
"name": "projects/my-project/operations/abc123",
"done": true,
"response": {
"@type": "type.googleapis.com/databricks.postgres.v1.Project",
"name": "projects/my-project",
...
}
}
フィールド:
done: 進行中はfalse、完了するとtrueresponse:doneがtrueerror: 操作が失敗した場合のエラーの詳細が含まれます
一般的なパターン
リソースの命名
リソースは、子リソースのスコープが親に設定される階層的な名前付けパターンに従います。
プロジェクトでは次の形式を使用します:
projects/{project_id}
操作などの子リソースは、親プロジェクトの下にネストされます。
projects/{project_id}/operations/{operation_id}
つまり、操作やその他の子リソースにアクセスするには、親プロジェクト ID が必要になります。
リソースID:
リソースを作成するときは、 project_id 、 branch_id 、またはendpoint_idリソース ID ( my-appなど) を指定する必要があります。 この ID は、API 呼び出しのリソース パスの一部になります ( projects/my-app/branches/developmentなど)。
オプションでdisplay_nameを指定して、リソースにさらに説明的なラベルを付けることもできます。表示名を指定しない場合は、システムはリソース ID を表示名として使用します。
:::tip UI でリソースを見つける
Lakebase UI でプロジェクトを見つけるには、プロジェクト リストでその表示名を探します。プロジェクトの作成時にカスタム表示名を指定しなかった場合は、 project_id (「my-app」など) を検索します。
:::
リソース ID は作成後に変更することはできません。
要件:
- 1~63文字で入力してください
- 小文字、数字、ハイフンのみ
- ハイフンで始まったり終わったりすることはできません
- 例:
my-app、analytics-db、customer-123
長期実行オペレーション(LRO)
作成、更新、および削除操作では、完了ステータスを提供するdatabricks.longrunning.Operationオブジェクトが返されます。
操作応答の例:
{
"name": "projects/my-project/operations/abc123",
"done": false
}
GetOperation を使用して完了をポーリングします。
- Python SDK
- Java SDK
- CLI
- curl
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Start an operation
operation = w.postgres.create_project(...)
# Wait for completion
result = operation.wait()
print(f"Operation completed: {result.name}")
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
WorkspaceClient w = new WorkspaceClient();
// Start an operation
CreateProjectOperation operation = w.postgres().createProject(...);
// Wait for completion
Project result = operation.waitForCompletion();
System.out.println("Operation completed: " + result.getName());
デフォルトでは、CLI は操作が完了するまで自動的に待機します。すぐに戻るには--no-waitを使用します:
databricks postgres create-project --no-wait ...
# Poll the operation
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq '.done'
doneがtrueになるまで数秒ごとにポーリングします。
マスクを更新する
更新操作には、変更するフィールドを指定するupdate_mask問題が必要です。 これにより、関係のないフィールドが誤って上書きされることがなくなります。
フォーマットの違い:
手法 | フォーマット | 例 |
|---|---|---|
REST API | クエリー |
|
Python SDK | FieldMaskオブジェクト |
|
CLI | 位置的議論 |
|