Gestire gli snapshot

Gli snapshot della sandbox in Gemini Enterprise Agent Platform ti consentono di salvare lo stato attuale di una sandbox e ripristinarlo in un secondo momento. Questo approccio è utile per le attività di gestione del ciclo di vita, ad esempio il ripristino di uno stato valido noto o l'esplorazione di rami di variazione.

Gli snapshot offrono diversi vantaggi per la gestione dei flussi di lavoro degli agenti:

  • Persistenza dello stato: salva lo stato esatto della sandbox, incluse le librerie installate, le modifiche al file system e lo stato della memoria.
  • Efficienza: anziché ricreare un ambiente complesso da zero, puoi ripristinarlo da uno snapshot in pochi secondi.
  • Checkpointing: crea checkpoint durante un'attività dell'agente a esecuzione continua per consentire il ripristino in caso di problemi.
  • Ramificazione: crea più sandbox dallo stesso snapshot per esplorare percorsi diversi o testare le variazioni.

Limitazioni

Non puoi ripristinare uno snapshot della sandbox in un nuovo ambiente sandbox se si verifica una delle seguenti condizioni:

  • La nuova sandbox utilizza un'architettura server diversa (ad esempio, amd64 rispetto a arm64).
  • La nuova sandbox utilizza una versione di runtime della sandbox diversa (ad esempio, dopo un upgrade del cluster GKE).
  • La nuova sandbox utilizza un URI immagine container diverso.

Conservazione

Quando crei uno snapshot, questo viene conservato per la durata specificata nella proprietà ttl. Per eliminare uno snapshot prima della scadenza del TTL, consulta Eliminare uno snapshot.

Crea uno snapshot

Per creare uno snapshot di una sandbox, utilizza l'SDK Python:

import agentplatform

client = agentplatform.Client(project='PROJECT_ID', location='LOCATION')
sandbox_name = 'projects/PROJECT_ID/locations/LOCATION/reasoningEngines/INSTANCE_ID/sandboxEnvironments/SANDBOX_ID'

snapshot_operation = client.sandboxes.snapshots.create(
    source_sandbox_environment_name=sandbox_name,
    config={
        "display_name": "DISPLAY_NAME",
        "ttl": "3600s",
    }
)
print(f"Snapshot creation initiated: {snapshot_operation.name}")

Sostituisci quanto segue:

  • PROJECT_ID: l' Cloud de Confiance ID progetto.
  • LOCATION: La Cloud de Confiance regione della risorsa. Consulta Regioni supportate.
  • INSTANCE_ID: l'ID istanza di Agent Platform.
  • SANDBOX_ID: l'ID sandbox esistente per cui creare uno snapshot.
  • DISPLAY_NAME: un nome visualizzato descrittivo per lo snapshot.

Esegui il ripristino da uno snapshot

Puoi ripristinare lo stato di una sandbox facendo riferimento a uno snapshot salvato quando crei un nuovo ambiente sandbox:

agent_instance_name = 'projects/PROJECT_ID/locations/LOCATION/reasoningEngines/INSTANCE_ID
snapshot_name = 'projects/PROJECT_ID/locations/LOCATION/reasoningEngines/INSTANCE_ID/sandboxEnvironments/SANDBOX_ID'

# Restore from a snapshot
new_sandbox_operation = client.sandboxes.create(
    name=agent_instance_name,
    config={
        "display_name": "restored-sandbox",
        "sandbox_environment_snapshot": snapshot_name,
    }
)

Elenca gli snapshot

Per elencare tutti gli snapshot della sandbox associati a un'istanza di Agent Platform:

snapshots_response = client.sandboxes.snapshots.list(name=agent_instance_name)

for snapshot in snapshots_response.sandbox_environment_snapshots:
    print(snapshot.name)

Visualizza i dettagli dello snapshot

Per visualizzare la configurazione di uno snapshot della sandbox specifico:

snapshot = client.sandboxes.snapshots.get(name=snapshot_name)
print(snapshot)

Elimina uno snapshot

Per eliminare esplicitamente uno snapshot della sandbox quando non è più necessario:

client.sandboxes.snapshots.delete(name=snapshot_name)
print("Snapshot deleted.")