Uma função útil do DynamoDB é a capacidade de fazer backups (e subsequentes restores) da base, sem interrupção do serviço e sem delays (praticamente instantâneos). A questão é que não há uma forma configurável de fazer o backup automaticamente, mas brincando de lego na AWS fica fácil.
A little help from my friends - Lambda
A função lambda abaixo (minha-lambda) fará a chamada à API do DynamoDB no horário definido no Cloudwatch Events Rule, realizando o backup das tabelas.
Código Lambda que será executado as 00:00am diariamente para realizar o backup
A little help from my friends - Cloudwatch
O CloudWatch Events Rule permite criar um evento que é disparado de acordo com as regras de uma Cron Expression. Associando o evento a uma função Lambda, podemos criar uma funcionalidade de backup automático que roda de acordo com a periodicidade desejada (diário, semanal, mensal etc).
Dashboard do CloudWatch Events Rule
Ao selecionar o botão "Create Rule", somos apresentados a um wizard que guia-nos ao longo do processo de criação de uma nova rule, a qual deverá disparar diariamente as 00:00am (cron expression 0 0 ? * * *)
Uma vez preenchidas as informações, incluindo as informações da função Lambda e qual alias a ser executado, nossa rule fica assim:
Rule depois de configurada para executar função Lambda diariamente às 00:00h
Um site útil para determinar a cron expression com facilidade é o https://www.freeformatter.com/cron-expression-generator-quartz.html.
Após selecionar o botão "Configure details", a tela seguinte é exibida, solicitando o nome da rule:
Dica: Forneça um nome significativo, colocando, por exemplo, o nome do projeto como prefixo ou sufixo.
Após selecionar o botão "Create rule" será exibida a tela do dashboard com mensagem semelhante a esta, confirmando a criação com sucesso:
Backup em ação:
Considerações finais
Automatizar as rotinas de backups poupa tempo e evita desastres. Um processo mais sofisticado poderia mover os backups após uma semana para um bucket do S3 e depois de um mês para o Glacier. Utilizando o S3 como um ponto intermediário teríamos acesso aos backups de forma praticamente instantâneas, ao contrário do Glacier que no processo mais básico (e barato) pode levar horas para recuperar um arquivo.