Buat dan kelola sandbox dengan SDK

Important

Fitur ini ada di Beta. Untuk mengaktifkan pratinjau fitur ini di ruang kerja, pilih ke pengaturan Databricks Sandbox di halaman Pratinjau ruang kerja. Lihat Kelola Pratinjau Azure Databricks.

Databricks saat ini tidak mengenakan biaya untuk penggunaan fitur ini. Namun, biaya dan harga untuk fitur Beta dapat berubah.

Databricks SDK untuk Python mencakup klien sandbox untuk membuat sandbox, menjalankan perintah di dalamnya, dan mengelola siklus hidupnya. Halaman ini membahas operasi-operasi tersebut. Untuk gambaran umum Databricks Sandbox, lihat Databricks Sandbox.

Pasang SDK

Instal atau tingkatkan Databricks SDK untuk Python, yang mencakup klien sandbox:

pip install --upgrade databricks-sdk

Buat WorkspaceClient

Semua operasi sandbox dijalankan melalui sebuah WorkspaceClient. Buat WorkspaceClient menggunakan kredensial yang diambil dari lingkungan Anda, profil konfigurasi, atau host dan token yang ditentukan secara eksplisit:

from databricks.sdk import WorkspaceClient

# Resolve credentials from the environment or the default config profile:
w = WorkspaceClient()

# Or select a specific ~/.databrickscfg profile:
w = WorkspaceClient(profile="my-workspace")

# Or pass the host and token explicitly:
w = WorkspaceClient(host="https://<workspace>.cloud.databricks.com", token="dapi...")

Untuk informasi lebih lanjut tentang mengonfigurasi dan mengautentikasi SDK, lihat Databricks SDK untuk Python.

Buat sandbox

Buat sandbox berdasarkan ID. Anda dapat mengonfigurasi spesifikasi komputasi secara opsional, seperti timeout ketidakaktifan yang mengontrol berapa lama sandbox tetap berjalan tanpa aktivitas:

from google.protobuf.duration_pb2 import Duration
from databricks.sdk.service.sandbox import ComputeSpec, Sandbox, SandboxSpec

created = w.sandbox.create_sandbox(
    sandbox=Sandbox(
        spec=SandboxSpec(compute=ComputeSpec(inactivity_timeout=Duration(seconds=900))),
    ),
    sandbox_id="my-sandbox",
)
print(created.name)   # "sandboxes/my-sandbox"

Dapatkan dan tampilkan daftar sandbox

Ambil satu sandbox berdasarkan nama, atau daftarkan semua sandbox:

sandbox = w.sandbox.get_sandbox("sandboxes/my-sandbox")
print(sandbox.status.state)   # SandboxState.SANDBOX_STATE_RUNNING

for sandbox in w.sandbox.list_sandboxes():
    print(sandbox.name, sandbox.status.state if sandbox.status else None)

Jalankan perintah di sandbox

Jalankan perintah di sandbox dan baca outputnya. Argumen pertama adalah nama sandbox, diikuti oleh program yang akan dijalankan dan argumennya. Ini adalah eksekusi langsung tanpa shell, jadi untuk menjalankan perintah shell, jalankan /bin/bash -c. Lewatkan variabel lingkungan apa pun melalui envs:

from google.protobuf.duration_pb2 import Duration

resp = w.sandbox.execute_command_sync(
    "sandboxes/my-sandbox",
    "/bin/bash",
    args=["-c", "echo hello world && whoami"],
    envs={"MY_VAR": "value"},
    execution_timeout=Duration(seconds=30),
)
print(resp.status)      # ExecuteCommandStatus.EXECUTE_COMMAND_STATUS_COMPLETED
print(resp.exit_code)   # 0
print(resp.stdout)      # "hello world\nsandbox-agent\n"
print(resp.stderr)
print(resp.truncated)   # True if the output was truncated

Perbarui metadata sandbox

Anda dapat mengubah nama tampilan dan batas waktu tidak aktif sandbox. Hanya path kolom berikut yang diterima. Jalur lain mengembalikan INVALID_PARAMETER_VALUE:

  • display_name
  • spec.compute.inactivity_timeout
from databricks.sdk.common.types.fieldmask import FieldMask
from databricks.sdk.service.sandbox import ComputeSpec, Sandbox, SandboxSpec
from google.protobuf.duration_pb2 import Duration

# Rename the sandbox
w.sandbox.update_sandbox(
    name="sandboxes/my-sandbox",
    sandbox=Sandbox(display_name="renamed sandbox"),
    update_mask=FieldMask(["display_name"]),
)

# Extend the inactivity timeout
w.sandbox.update_sandbox(
    name="sandboxes/my-sandbox",
    sandbox=Sandbox(spec=SandboxSpec(compute=ComputeSpec(inactivity_timeout=Duration(seconds=1800)))),
    update_mask=FieldMask(["spec.compute.inactivity_timeout"]),
)

Hentikan dan mulai ulang sandbox

Hentikan sandbox untuk melepaskan komputasinya sambil mempertahankan direktori utama Anda:

w.sandbox.stop_sandbox("sandboxes/my-sandbox")    # Moves to SANDBOX_STATE_STOPPED

Mulai ulang sandbox untuk melanjutkan pekerjaan:

w.sandbox.start_sandbox("sandboxes/my-sandbox")   # Moves to SANDBOX_STATE_RUNNING

Hapus sandbox

Hapus sandbox setelah selesai. Menghapus sandbox akan menghapus direktori berandanya dan menghentikan penagihan untuk sandbox tersebut:

w.sandbox.delete_sandbox("sandboxes/my-sandbox")

Sumber daya tambahan