Eu tenho uma instância do EC2 executando um servidor Web que armazena os arquivos enviados pelos usuários no S3. Os arquivos são gravados uma vez e nunca mudam, mas são recuperados ocasionalmente pelos usuários. Provavelmente, acumularemos algo em torno de 200 a 500 GB de dados por ano. Gostaríamos de garantir que esses dados sejam seguros, principalmente contra exclusões acidentais e que possamos restaurar arquivos que foram excluídos, independentemente do motivo.
Eu li sobre o recurso de versão dos buckets do S3, mas não consigo descobrir se é possível recuperar arquivos sem histórico de modificações. Consulte os documentos da AWS aqui sobre controle de versão:
http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html
Nesses exemplos, eles não mostram o cenário em que os dados são carregados, mas nunca modificados e, em seguida, excluídos. Os arquivos excluídos nesse cenário são recuperáveis?
Então, pensamos que poderíamos simplesmente fazer backup dos arquivos S3 no Glacier usando o gerenciamento do ciclo de vida do objeto:
http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
Mas parece que isso não funcionará para nós, pois o objeto de arquivo não é copiado para o Glacier, mas movido para o Glacier (com mais precisão, parece que é um atributo do objeto que foi alterado, mas de qualquer maneira ...).
Portanto, parece que não há uma maneira direta de fazer o backup dos dados do S3, e a transferência dos dados do S3 para os servidores locais pode consumir muito tempo e incorrer em custos de transferência significativos ao longo do tempo.
Por fim, pensamos em criar um novo depósito todos os meses para servir como backup completo mensal e copiar os dados do depósito original para o novo no dia 1. Em seguida, usar algo como duplicidade ( http://duplicity.nongnu.org/ ) sincronizamos o intervalo de backup todas as noites. No final do mês, colocaríamos o conteúdo do depósito de backup no armazenamento do Glacier e criaríamos um novo depósito de backup usando uma nova cópia atual do depósito original ... e repetiríamos esse processo. Parece que isso funcionaria e minimizaria os custos de armazenamento / transferência, mas não tenho certeza se a duplicidade permite transferências de balde para balde diretamente sem trazer primeiro os dados para o cliente de controle.
Então, acho que há algumas perguntas aqui. Primeiro, o versionamento do S3 permite a recuperação de arquivos que nunca foram modificados? Existe alguma maneira de "copiar" arquivos do S3 para o Glacier que eu perdi? A duplicidade ou qualquer outra ferramenta pode transferir arquivos entre os buckets do S3 diretamente para evitar custos de transferência? Finalmente, estou muito errado em minha abordagem de backup de dados S3?
Agradecemos antecipadamente por qualquer insight que você possa fornecer!
Atualizar
A Amazon anunciou recentemente que o controle de versão agora funciona com regras de ciclo de vida