Skip to main content
Snapshots sind Backups des Speichers einer App oder Datenbank. Apps und Datenbanken teilen sich dieselben drei Methoden:
  • 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)
Wie viele Snapshots du pro Tag erstellen kannst, hängt von deinem Plan ab (siehe Limits). Jedes Snippet unten läuft für sich allein in diesem Programm: Füge jeweils eines in main ein und führe goimports aus (siehe Beispiele ausführen).

Snapshots auflisten

Einen Snapshot erstellen

Create wartet auf den Snapshot (ohne Deadline auf ctx mindestens 2 Minuten, bevor ein Timeout eintritt). Ein großer Snapshot wird möglicherweise nicht rechtzeitig fertig: Die API antwortet dann mit 202 und das SDK gibt ein SnapshotCreated mit Pending auf true und einen nil-Fehler zurück. Der Snapshot wird weiter erstellt und erscheint von selbst in List, meist innerhalb von 2 Minuten.
Rufe Create nie erneut auf, um einen ausstehenden Snapshot zu prüfen: Das startet einen neuen und zählt gegen das tägliche Snapshot-Kontingent des Plans. Frage stattdessen List ab.

Snapshot wiederherstellen

Restore(ctx, id, name, versionID) nimmt den Name und die VersionID eines aufgelisteten Snapshots.

Einen Snapshot herunterladen

c.DownloadSnapshot(ctx, url, w) streamt eine Snapshot-Datei von ihrer signierten url (aus List oder Create) in einen beliebigen io.Writer. Die Methode ruft die API nicht auf: Der API-Schlüssel wird nie an den Speicher-Host gesendet, und die URL erscheint nie im zurückgegebenen Fehler. Nichts wird im Speicher gepuffert, und es gibt keine Standard-Deadline (begrenze oder brich den Download über ctx ab). Ein Netzwerkfehler vor der Antwort wird wie bei jedem GET wiederholt.
Eine abgelaufene oder ungültige URL gibt einen *APIError mit dem HTTP-Status des Speicher-Hosts und UNKNOWN_ERROR zurück. Eine URL, die sich nicht parsen lässt, und ein Fehler deines io.Writer werden als einfache Fehler zurückgegeben.

Konto-Snapshots

c.Account.Snapshots(ctx, scope) listet jeden Snapshot des Kontos auf. Übergib "" für alle, oder squarecloud.SnapshotScopeApplications bzw. squarecloud.SnapshotScopeDatabases. Dafür ist ein aktiver Plan nötig, und die Methode teilt sich das Rate Limit der Netzwerk-Endpoints (429 RATE_LIMITED).

Limits

  • Create ist auf einen Aufruf pro 180 Sekunden und auf ein tägliches, planabhängiges Kontingent begrenzt: Eine Überschreitung des Kontingents ergibt 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Während eine Wiederherstellung läuft, ergibt das Löschen der App oder das Starten der Datenbank 403 RESTORE_IN_PROGRESS.

Nächste Schritte

Datenbanken

Datenbanken erstellen und verwalten.

API-Referenz für Snapshots

Die REST-Endpunkte hinter diesen Methoden.

Snapshots über die CLI

Dieselben Aktionen im Terminal.