client.apps.snapshots:list(app_id),create(app_id),restore(app_id, name, version_id)client.databases.snapshots:list(database_id),create(database_id),restore(database_id, name, version_id)
client di Creare il client. app_id è l’id di una delle tue app: client.account.me() le elenca.
Elencare gli snapshot
Creare uno snapshot
create() attende lo snapshot (almeno 120 s prima di andare in timeout). Uno snapshot grande potrebbe non terminare in tempo: in quel caso l’API risponde 202 e l’SDK restituisce {'pending': True}. Lo snapshot continua a essere generato e compare da solo in list(), di solito entro 2 minuti. Altrimenti restituisce {'pending': False, 'url': ..., 'key': ...}.
Ripristinare uno snapshot
restore(id, name, version_id) accetta il name e il version_id di uno snapshot presente nell’elenco.
Scaricare uno snapshot
client.download_snapshot(url, dest) trasmette in streaming su disco un file di snapshot dal suo url firmato (ottenuto da list() o create()) e restituisce il percorso in cui lo ha scritto. Non chiama l’API: la chiave API non viene mai inviata all’host di storage. Nulla viene bufferizzato in memoria.
destè un percorso di file, oppure una directory per mantenere il nome del file remoto. Un percorso che termina con/viene creato come directory.- I dati vanno in un file
.partche viene rinominato al termine, quindi un download fallito non sovrascrive mai un file precedente. - Non c’è un timeout per l’intero download:
timeoutlimita ogni lettura.
AsyncSquareCloud, diventa await client.download_snapshot(url, dest).
Un URL scaduto o non valido solleva un SquareCloudAPIError con lo status HTTP dell’host di storage e UNKNOWN_ERROR. Una destinazione in cui non è possibile scrivere solleva un OSError.
Snapshot a livello di account
client.account.snapshots(scope=None) elenca tutti gli snapshot dell’account, facoltativamente solo "applications" o "databases" (solo keyword). 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 429DAILY_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.

