Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Lakebase Autoscaling tersedia di wilayah berikut: eastus, , , eastus2centralus, southcentralus, westus, westus2canadacentral, brazilsouth, , northeurope, uksouth, westeurope, , , australiaeast, , centralindia, . southeastasia
Lakebase Autoscaling adalah versi terbaru Lakebase, dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Jika Anda adalah pengguna Lakebase Provisioned, lihat Lakebase Provisioned.
Halaman ini memberikan gambaran umum tentang LAKEBASE Autoscaling API, termasuk autentikasi, titik akhir yang tersedia, dan pola umum untuk bekerja dengan REST API, Databricks CLI, dan Databricks SDK (Python, Java, Go).
Untuk referensi API lengkap, lihat dokumentasi API Postgres.
Penting
Lakebase Postgres API berada di Beta. Titik akhir, parameter, dan perilaku API dapat berubah.
Authentication
LAKEBASE Autoscaling API menggunakan autentikasi OAuth tingkat ruang kerja untuk mengelola infrastruktur proyek (membuat proyek, mengonfigurasi pengaturan, dll.).
Nota
Dua jenis konektivitas: API ini untuk manajemen platform (membuat proyek, cabang, komputasi). Untuk akses database (menyambungkan ke data kueri):
- Klien SQL (psql, pgAdmin, DBeaver): Gunakan token OAuth Lakebase atau kata sandi Postgres. Lihat Autentikasi.
- API Data (RESTful HTTP): Gunakan token Lakebase OAuth. Lihat API Data.
- Driver bahasa pemrograman (psycopg, SQLAlchemy, JDBC): Gunakan token OAuth Lakebase atau kata sandi Postgres. Lihat Panduan Memulai Cepat.
Untuk penjelasan lengkap tentang dua lapisan autentikasi ini, lihat Arsitektur autentikasi.
Menyiapkan autentikasi
Autentikasi menggunakan Databricks CLI:
databricks auth login --host https://your-workspace.cloud.databricks.com
Ikuti perintah browser untuk masuk. CLI menyimpan token OAuth Anda di ~/.databricks/token-cache.json.
Kemudian pilih metode akses Anda:
Python SDK
SDK menggunakan autentikasi terpadu dan secara otomatis menangani token OAuth:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
Java SDK
SDK menggunakan autentikasi terpadu dan secara otomatis menangani token OAuth:
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
antarmuka baris perintah (CLI)
Perintah secara otomatis menggunakan token yang di-cache:
databricks postgres list-projects
melengkung
Buat token untuk panggilan API langsung:
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}"
Token OAuth kedaluwarsa setelah satu jam. Regenerasi sesuai kebutuhan.
Untuk detail selengkapnya, lihat Mengotorisasi akses pengguna ke Databricks dengan OAuth.
Titik akhir yang tersedia (Beta)
Semua titik akhir menggunakan jalur /api/2.0/postgres/dasar .
Proyek
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Membuat proyek | POST |
/projects |
Membuat proyek |
| Memperbarui proyek | PATCH |
/projects/{project_id} |
Pengaturan umum |
| Menghapus proyek | DELETE |
/projects/{project_id} |
Menghapus proyek |
| Dapatkan proyek | GET |
/projects/{project_id} |
Dapatkan detail proyek |
| Mencantumkan proyek | GET |
/projects |
Mencantumkan proyek |
Cabang
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Membuat cabang | POST |
/projects/{project_id}/branches |
Membuat cabang |
| Memperbarui cabang | PATCH |
/projects/{project_id}/branches/{branch_id} |
Memperbarui pengaturan cabang |
| Hapus cabang | DELETE |
/projects/{project_id}/branches/{branch_id} |
Menghapus cabang |
| Ambil cabang | GET |
/projects/{project_id}/branches/{branch_id} |
Lihat cabang |
| Daftar cabang | GET |
/projects/{project_id}/branches |
Daftar cabang |
Titik akhir (Komputasi dan Replika Baca)
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Membuat titik akhir | POST |
/projects/{project_id}/branches/{branch_id}/endpoints |
Membuat komputasi / Membuat replika baca |
| Memperbarui titik akhir | PATCH |
/projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} |
Mengedit mesin komputasi / Mengedit replika baca |
| Menghapus titik akhir | DELETE |
/projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} |
Menghapus komputasi / Menghapus replika baca |
| Dapatkan titik akhir | GET |
/projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} |
Menampilkan komputasi |
| Mencantumkan titik akhir | GET |
/projects/{project_id}/branches/{branch_id}/endpoints |
Menampilkan komputasi |
Peran
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Mencantumkan peran | GET |
/projects/{project_id}/branches/{branch_id}/roles |
Menampilkan peran Postgres |
| Membuat peran | POST |
/projects/{project_id}/branches/{branch_id}/roles |
Membuat peran OAuth | Membuat peran kata sandi |
| Dapatkan peran | GET |
/projects/{project_id}/branches/{branch_id}/roles/{role_id} |
Menampilkan peran Postgres |
| Memperbarui peran | PATCH |
/projects/{project_id}/branches/{branch_id}/roles/{role_id} |
Memperbarui peran |
| Menghapus peran | DELETE |
/projects/{project_id}/branches/{branch_id}/roles/{role_id} |
Menghapus peran |
Kredensial Database
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Hasilkan kredensial database | POST |
/credentials |
Autentikasi token OAuth |
Operasi
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Dapatkan operasi | GET |
/projects/{project_id}/operations/{operation_id} |
Lihat contoh di bawah ini |
Izin
Izin Project ACL menggunakan API Izin Azure Databricks standar, bukan /api/2.0/postgres/ jalur dasar. Atur request_object_type ke database-projects dan request_object_id ke ID proyek.
| Operasi | Metode | Titik akhir | Documentation |
|---|---|---|---|
| Mendapatkan izin proyek | GET |
/api/2.0/permissions/database-projects/{project_id} |
Referensi API Izin |
| Memperbarui izin proyek | PATCH |
/api/2.0/permissions/database-projects/{project_id} |
Referensi API Izin |
| Mengganti izin proyek | PUT |
/api/2.0/permissions/database-projects/{project_id} |
Referensi API Izin |
Tingkat izin yang dapat diberikan untuk proyek Lakebase adalah CAN_USE dan CAN_MANAGE.
CAN_CREATE adalah tingkat yang diwariskan dan tidak dapat diatur melalui API. Lihat Tingkat izin.
Untuk contoh penggunaan dan setara CLI/SDK/Terraform, lihat Memberikan izin secara terprogram.
Dapatkan operasi
Periksa status operasi yang berjalan lama dengan nama sumber dayanya.
Python SDK
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}")
Java SDK
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());
antarmuka baris perintah (CLI)
CLI secara otomatis menunggu operasi selesai secara default. Gunakan --no-wait untuk melewati polling:
# Create project without waiting
databricks postgres create-project --no-wait ...
# Later, check the operation status
databricks postgres get-operation projects/my-project/operations/abc123
melengkung
# Get operation status
curl -X GET "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Format respons:
{
"name": "projects/my-project/operations/abc123",
"done": true,
"response": {
"@type": "type.googleapis.com/databricks.postgres.v1.Project",
"name": "projects/my-project",
...
}
}
Bidang:
-
done:falsesaat sedang berlangsung,trueketika selesai -
response: Berisi hasil ketikadoneadalahtrue -
error: Berisi detail kesalahan jika operasi gagal
Pola umum
Penamaan sumber daya
Sumber daya mengikuti pola penamaan hierarkis di mana sumber daya anak dibatasi oleh induknya.
Proyek menggunakan format ini:
projects/{project_id}
Sumber daya anak seperti sumber daya operasional ditempatkan di bawah proyek induknya.
projects/{project_id}/operations/{operation_id}
Ini berarti Anda memerlukan ID proyek induk untuk mengakses operasi atau sumber daya anak lainnya.
ID sumber daya:
Saat membuat sumber daya, Anda harus memberikan ID sumber daya (seperti my-app) untuk parameter project_id, branch_id, atau endpoint_id. ID ini menjadi bagian dari jalur sumber daya dalam panggilan API (seperti projects/my-app/branches/development).
Anda dapat secara opsional menyediakan display_name untuk memberi sumber daya Anda label yang lebih deskriptif. Jika Anda tidak menentukan nama tampilan, sistem akan menggunakan ID sumber daya Anda sebagai nama tampilan.
:::tip Menemukan sumber daya di UI
Untuk menemukan proyek di UI Lakebase, cari nama tampilannya di daftar proyek. Jika Anda tidak memberikan nama tampilan kustom saat membuat proyek, cari proyek Anda project_id (seperti "aplikasi saya").
:::
Nota
ID sumber daya tidak dapat diubah setelah pembuatan.
Persyaratan:
- Panjangnya harus 1-63 karakter
- Huruf kecil, digit, dan tanda hubung saja
- Tidak dapat memulai atau mengakhiri dengan tanda hubung
- Contoh:
my-app,analytics-db,customer-123
Operasi jangka panjang (LRO)
Operasi buat, perbarui, dan hapus mengembalikan databricks.longrunning.Operation objek yang menyediakan status penyelesaian.
Contoh respons operasi:
{
"name": "projects/my-project/operations/abc123",
"done": false
}
Polling untuk penyelesaian menggunakan GetOperation:
Python SDK
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}")
Java SDK
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());
antarmuka baris perintah (CLI)
CLI secara otomatis menunggu operasi selesai secara default. Gunakan --no-wait untuk segera kembali:
databricks postgres create-project --no-wait ...
melengkung
# Poll the operation
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq '.done'
Memeriksa setiap beberapa detik hingga done menjadi true.
Memperbarui masker
Operasi pembaruan memerlukan parameter yang update_mask menentukan bidang mana yang akan diubah. Ini mencegah penimpaan secara tidak sengaja pada bidang yang tidak terkait.
Perbedaan format:
| Metode | Rancangan | Example |
|---|---|---|
| REST API | Parameter pencarian | ?update_mask=spec.display_name |
| Python SDK | Objek FieldMask | update_mask=FieldMask(field_mask=["spec.display_name"]) |
| antarmuka baris perintah (CLI) | Argumen posisi | update-project NAME spec.display_name |
Penanganan kesalahan
Lakebase API mengembalikan kode status HTTP standar.
409: Operasi yang bertentangan
Pesan kesalahan:
project already has running conflicting operations, scheduling of new ones is prohibited
Apa artinya:
Lakebase terkadang menjadwalkan operasi pemeliharaan internal pada proyek. Jika permintaan klien tiba saat salah satu operasi internal ini sedang berlangsung, Lakebase dapat menolak permintaan baru dengan kesalahan 409 Conflict .
Ini adalah perilaku yang diharapkan. Klien harus siap untuk mencoba kembali permintaan ketika kesalahan ini terjadi.
Apa yang harus dilakukan:
Ulangi permintaan tersebut. Ketika operasi internal selesai, Lakebase menerima permintaan baru untuk proyek.
Gunakan penundaan eksponensial untuk percobaan ulang: tunggu interval singkat sebelum coba lagi pertama, kemudian lipat gandakan waktu tunggu pada setiap upaya berikutnya. Interval awal 100 milidetik dengan maksimum 30 detik adalah default yang wajar.
Python SDK
import time
from databricks.sdk import WorkspaceClient
from databricks.sdk.errors import ResourceConflict
from databricks.sdk.service.postgres import Branch, BranchSpec
w = WorkspaceClient()
def retry_on_conflict(fn, max_attempts=5, base_delay=0.1):
"""Retry a Lakebase API call when a conflicting operation is in progress."""
for attempt in range(max_attempts):
try:
return fn()
except ResourceConflict:
if attempt == max_attempts - 1:
raise
wait = base_delay * (2 ** attempt)
print(f"Conflicting operation in progress. Retrying in {wait}s...")
time.sleep(wait)
# Example: create a branch with retry
branch = retry_on_conflict(
lambda: w.postgres.create_branch(
parent="projects/my-project",
branch=Branch(spec=BranchSpec(no_expiry=True)),
branch_id="my-branch",
).wait()
)
melengkung
# Retry with exponential backoff on 409 responses
retry_on_conflict() {
local cmd=("$@")
local max_attempts=5
local delay=0.1
local attempt=0
while [ $attempt -lt $max_attempts ]; do
response=$(curl -s -w "\n%{http_code}" "${cmd[@]}")
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed '$d')
if [ "$http_code" -ne 409 ]; then
echo "$body"
return 0
fi
attempt=$((attempt + 1))
if [ $attempt -eq $max_attempts ]; then
echo "Max retries reached. Last response: $body" >&2
return 1
fi
echo "Conflicting operation in progress. Retrying in ${delay}s..." >&2
sleep "$delay"
delay=$((delay * 2))
done
}
# Example: create a branch with retry
retry_on_conflict \
-X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches?branch_id=my-branch" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"spec": {"no_expiry": true}}'
Nota
409 Conflict pada permintaan API Lakebase menunjukkan bahwa permintaan tidak diterima, bukan bahwa permintaan tersebut telah diterapkan. Selalu verifikasi status sumber daya setelah berhasil mencoba kembali dengan memanggil titik akhir yang GET sesuai.