Skip to main content
Los snapshots son copias de seguridad del almacenamiento de una aplicación o de una base de datos. Las aplicaciones y las bases de datos comparten los mismos tres métodos:
  • 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)
La cantidad de snapshots que puedes crear por día depende de tu plan (consulta Límites). Cada fragmento de abajo se ejecuta por sí solo dentro de este programa: pega uno a la vez en main y ejecuta goimports (consulta Ejecutar los ejemplos).

Listar snapshots

Crear un snapshot

Create espera al snapshot (sin un deadline en ctx, al menos 2 minutos antes de agotar el tiempo). Es posible que un snapshot grande no termine a tiempo: en ese caso la API responde 202 y el SDK devuelve un SnapshotCreated con Pending en true y un error nil. El snapshot se sigue generando y aparece por sí solo en List, normalmente en menos de 2 minutos.
Nunca vuelvas a llamar a Create para comprobar un snapshot pendiente: eso inicia uno nuevo y cuenta para la cuota diaria de snapshots del plan. Consulta List periódicamente en su lugar.

Restaurar un snapshot

Restore(ctx, id, name, versionID) recibe el Name y el VersionID de un snapshot del listado.

Descargar un snapshot

c.DownloadSnapshot(ctx, url, w) transmite un archivo de snapshot desde su url firmada (de List o Create) a cualquier io.Writer. No llama a la API: la clave de API nunca se envía al host de almacenamiento, y la URL nunca aparece en el error devuelto. No se almacena nada en memoria, y no hay deadline por defecto (limítalo o cancélalo con ctx). Un error de red antes de la respuesta se reintenta como cualquier GET.
Una URL caducada o no válida devuelve un *APIError con el estado HTTP del host de almacenamiento y UNKNOWN_ERROR. Una URL que no se puede analizar y un error de tu io.Writer se devuelven como errores simples.

Snapshots de la cuenta

c.Account.Snapshots(ctx, scope) lista todos los snapshots de la cuenta. Pasa "" para todos, o squarecloud.SnapshotScopeApplications o squarecloud.SnapshotScopeDatabases. Necesita un plan activo y comparte el límite de tasa de los endpoints de red (429 RATE_LIMITED).

Límites

  • Create está limitado a una llamada cada 180 segundos y a una cuota diaria que depende del plan: superar la cuota da 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Mientras se ejecuta una restauración, eliminar la aplicación o iniciar la base de datos da 403 RESTORE_IN_PROGRESS.

Próximos pasos

Bases de datos

Crea y gestiona bases de datos.

Referencia de la API de snapshots

Los endpoints REST detrás de estos métodos.

Snapshots desde la CLI

Las mismas acciones desde la terminal.