Zum Hauptinhalt springen
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
Snapshots gibt es in drei Geltungsbereichen: pro Anwendung, pro Datenbank und kontoweit.

Das Snapshot-Struct

Auflistende Methoden geben []squarecloud.Snapshot zurück:
FeldTypBeschreibung
NamestringName des Snapshot-Objekts
SizeintGröße in Bytes
ModifiedstringDatum der letzten Änderung
KeystringSignierter Query-String zum Bauen der Download-URL

Anwendungs-Snapshots

Auflisten

snapshots, err := api.GetApplicationSnapshots("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for _, snap := range snapshots {
	fmt.Println(snap.Name, snap.Size, snap.Modified)
}

Erstellen

api.CreateApplicationSnapshot(appID) stößt einen frischen Snapshot an und gibt einen squarecloud.SnapshotCreated mit der signierten Download-URL zurück.
created, err := api.CreateApplicationSnapshot("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(created.URL) // signed download URL
fmt.Println(created.Key)

Wiederherstellen

api.RestoreApplicationSnapshot(appID, snapshotID, versionID) setzt die Anwendung auf eine frühere Snapshot-Version zurück.
err := api.RestoreApplicationSnapshot(
	"abc123def456abc123def456",
	"00000000-0000-4000-8000-000000000000",
	"abc123def4567890",
)
if err != nil {
	panic(err)
}

Datenbank-Snapshots

Der Datenbank-Bereich spiegelt den Anwendungs-Bereich wider:
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
	panic(err)
}

created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
	panic(err)
}
fmt.Println(created.URL)

err = api.RestoreDatabaseSnapshot(
	"abc123def456abc123def456",
	"00000000-0000-4000-8000-000000000000_mongo",
	"v1",
)
if err != nil {
	panic(err)
}

Snapshots kontoweit auflisten

api.UserSnapshots(scope) gibt jeden Snapshot zurück, den du über alle deine Anwendungen oder Datenbanken hinweg besitzt. Der Scope ist eine der squarecloud.SnapshotScope*-Konstanten:
appSnapshots, err := api.UserSnapshots(squarecloud.SnapshotScopeApplications)
if err != nil {
	panic(err)
}

dbSnapshots, err := api.UserSnapshots(squarecloud.SnapshotScopeDatabases)
if err != nil {
	panic(err)
}
Die kontoweite Snapshot-Auflistung erfordert einen aktiven kostenpflichtigen Plan. Jeder Plan hat außerdem ein tägliches Snapshot-Kontingent — ist es aufgebraucht, schlägt die Erstellung mit dem Code DAILY_SNAPSHOTS_LIMIT_REACHED fehl, getrennt vom generischen Rate-Limit-Fehler KEEP_CALM.