Skip to main content
Gli snapshot sono backup dello storage di un’app o di un database. App e database condividono gli stessi tre metodi:
  • c.Apps.Snapshots: List(ctx, appID), Create(ctx, appID), Restore(ctx, appID, name, versionID)
  • c.Databases.Snapshots: List(ctx, databaseID), Create(ctx, databaseID), Restore(ctx, databaseID, name, versionID)
Quanti snapshot puoi creare al giorno dipende dal tuo piano (vedi Limiti). Ogni snippet qui sotto funziona da solo all’interno di questo programma: incollane uno alla volta in main ed esegui goimports (vedi Eseguire gli esempi).

Elencare gli snapshot

Creare uno snapshot

Create attende lo snapshot (senza una scadenza su ctx, almeno 2 minuti prima di andare in timeout). Uno snapshot grande potrebbe non terminare in tempo: in quel caso l’API risponde 202 e l’SDK restituisce un SnapshotCreated con Pending impostato a true e un errore nil. Lo snapshot continua a essere generato e compare da solo in List, di solito entro 2 minuti.
Non chiamare mai di nuovo Create per controllare uno snapshot in sospeso: ne avvia uno nuovo e conta nella quota giornaliera di snapshot del piano. Interroga invece List.

Ripristinare uno snapshot

Restore(ctx, id, name, versionID) accetta il Name e il VersionID di uno snapshot elencato.

Scaricare uno snapshot

c.DownloadSnapshot(ctx, url, w) trasmette in streaming il file di uno snapshot dal suo url firmato (ottenuto da List o Create) verso qualsiasi io.Writer. Non chiama l’API: la chiave API non viene mai inviata all’host dello storage, e l’URL non compare mai nell’errore restituito. Nulla viene tenuto in memoria e non c’è una scadenza predefinita (limitalo o annullalo con ctx). Un errore di rete prima della risposta viene ritentato come qualsiasi GET.
Un URL scaduto o non valido restituisce un *APIError con lo status HTTP dell’host dello storage e UNKNOWN_ERROR. Un URL che non può essere analizzato, e un errore del tuo io.Writer, vengono restituiti come errori semplici.

Snapshot a livello di account

c.Account.Snapshots(ctx, scope) elenca tutti gli snapshot dell’account. Passa "" per ottenerli tutti, oppure squarecloud.SnapshotScopeApplications o squarecloud.SnapshotScopeDatabases. Richiede un piano attivo e condivide il rate limit degli endpoint di rete (429 RATE_LIMITED).

Limiti

  • Create è limitato a una chiamata ogni 180 secondi e a una quota giornaliera che dipende dal piano: superare la quota produce 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Mentre è in corso un ripristino, eliminare l’app o avviare il database produce 403 RESTORE_IN_PROGRESS.

Prossimi passi

Database

Crea e gestisci i database.

Riferimento API degli snapshot

Gli endpoint REST dietro questi metodi.

Snapshot dalla CLI

Le stesse azioni dal terminale.