Skip to main content
Snapshots são backups do armazenamento de uma aplicação ou de um banco de dados. Aplicações e bancos de dados compartilham os mesmos três métodos:
  • 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)
Quantos snapshots você pode criar por dia depende do seu plano (veja Limites). Os exemplos usam o client de Criando o cliente. app_id é o id de uma das suas aplicações: client.account.me() lista todas.

Listando snapshots

Criando um snapshot

create() aguarda o snapshot (pelo menos 120 s antes de expirar). Um snapshot grande pode não terminar a tempo: a API então responde 202 e o SDK retorna {'pending': True}. O snapshot continua sendo gerado e aparece em list() sozinho, geralmente em até 2 minutos. Caso contrário, retorna {'pending': False, 'url': ..., 'key': ...}.
Nunca chame create() novamente para verificar um snapshot pendente: isso inicia um novo e conta para a cota diária de snapshots do plano. Consulte list() em vez disso.

Restaurando um snapshot

restore(id, name, version_id) recebe o name e o version_id de um snapshot listado.

Baixando um snapshot

client.download_snapshot(url, dest) transmite um arquivo de snapshot a partir da sua url assinada (de list() ou create()) para o disco e retorna o caminho em que escreveu. Ele não chama a API: a chave de API nunca é enviada ao host de armazenamento. Nada é armazenado em memória.
  • dest é um caminho de arquivo, ou um diretório para manter o nome do arquivo remoto. Um caminho terminado em / é criado como diretório.
  • Os dados vão para um arquivo .part que é renomeado quando termina, então um download que falhe nunca sobrescreve um arquivo anterior.
  • Não há timeout para o download inteiro: timeout limita cada leitura.
Com o AsyncSquareCloud, é await client.download_snapshot(url, dest). Uma URL expirada ou inválida lança um SquareCloudAPIError com o status HTTP do host de armazenamento e UNKNOWN_ERROR. Um destino em que não é possível escrever lança um OSError.

Snapshots da conta

client.account.snapshots(scope=None) lista todos os snapshots da conta, opcionalmente apenas "applications" ou "databases" (keyword-only). Requer um plano ativo e compartilha o rate limit dos endpoints de rede (429 RATE_LIMITED).

Limites

  • create() é limitado a uma chamada a cada 180 segundos e a uma cota diária que depende do plano: ultrapassar a cota resulta em 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Enquanto uma restauração está em andamento, excluir a aplicação ou iniciar o banco de dados resulta em 403 RESTORE_IN_PROGRESS.

Próximos passos

Bancos de dados

Crie e gerencie bancos de dados.

Referência da API de snapshots

Os endpoints REST por trás destes métodos.

Snapshots pela CLI

As mesmas ações pelo terminal.