Como posso solucionar problemas de restauração do meu cluster do ElastiCache no S3?

Data da última atualização: 05/08/2022

Ao restaurar meu backup do Amazon ElastiCache para Redis no Amazon Simple Storage Service (Amazon S3), a criação do cluster falha. Recebo uma mensagem de erro “Create-failed” (Falha na criação) ou “Permission denied" (Permissão negada). Como posso solucionar esse problema?

Breve descrição

A seguir estão os motivos comuns pelos quais a restauração de um backup do ElastiCache no Amazon S3 falha:

  • Você está tentando restaurar um backup fora das restrições de backup.
  • O ElastiCache não conseguiu recuperar o arquivo do Amazon S3.
  • O arquivo de backup do ElastiCache está localizado em um bucket do Amazon S3 em outra região.
  • Você está restaurando um arquivo .rdb contendo vários bancos de dados para um cluster do ElastiCache (habilitado para modo de cluster).

Resolução

Você está tentando restaurar um backup fora das restrições de backup

Ao restaurar um backup do ElastiCache para Redis, é importante observar as seguintes restrições de backup:

  • Não é possível restaurar de um backup criado usando um cluster do Redis com o modo de cluster habilitado para outro com o modo de cluster desabilitado.
    • Ao restaurar um backup feito de um cluster do ElastiCache com o modo de cluster habilitado, não é possível selecionar a opção desabilitada do modo de cluster no console do ElastiCache. Somente a opção habilitada para o modo de cluster está disponível.
    • Quando você exporta um backup de cluster do ElastiCache com o modo de cluster habilitado para o Amazon S3, vários arquivos .rdb são criados, um para cada fragmento. Se você tentar propagar o backup do Amazon S3, poderá fazer referência a apenas um backup (.rdb). Isso resulta na propagação das chaves de um único fragmento. Tentar contornar isso incluindo um curinga resulta no seguinte erro:
      Error: Object or bucket does not exist for S3 object: examplebucket/cluster-mode-enabled-*.rdb (Erro: O objeto ou o bucket não existe para o objeto do S3: examplebucket/cluster-mode-enabled-*.rdb).
  • Não é possível restaurar um backup de um cluster que usa a classificação de dados em níveis. Por exemplo, não é possível restaurar um nó r6gd em um cluster que não usa a classificação de dados em níveis, como um nó r6g.
  • Não é possível restaurar de um cluster do Redis com o modo de cluster desabilitado para outro com o modo de cluster habilitado se o arquivo .rdb fizer referência a mais de um banco de dados. Tentar fazer isso resulta no seguinte erro:
    Error: To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0 (Erro: Para restaurar um snapshot no modo de cluster, todas as chaves no arquivo RDB devem residir em DB 0).

O ElastiCache não conseguiu recuperar o arquivo do Amazon S3

Esse erro ocorre quando o ElastiCache não tem as permissões necessárias para acessar o backup do ElastiCache armazenado no bucket do S3. Você pode confirmar o problema de permissões revisando os eventos do ElastiCache.

O exemplo de evento do ElastiCache a seguir mostra que a criação do “teste” do grupo de replicação do Redis falhou porque o ElastiCache não conseguiu recuperar o arquivo de backup do S3:

Restore from snapshot failed for node group 0001 in replication group test. Failed to retrieve file from S3

Depois de determinar que a causa do erro é a não recuperação do arquivo do Amazon S3 pelo ElastiCache, confirme se sua região é uma das seguintes:

Uma região de adesão exige uma política de buckets que permita que o ElastiCache recupere o arquivo de backup do Amazon S3.

Se o bucket do S3 estiver localizado em uma das seguintes regiões, você deverá permitir que o serviço do ElastiCache acesse o arquivo de backup no S3:

  • China (Pequim) e China (Ningxia)
  • AWS GovCloud (Oeste dos EUA)
  • Uma região padrão

Observação: o ID canônico para as regiões China (Pequim), China (Ningxia) e AWS GovCloud (Oeste dos EUA) é diferente das regiões padrão da AWS:

China (Pequim) e China (Ningxia)

Canonical ID: b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

Região AWS GovCloud (Oeste dos EUA)

Canonical ID: 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

Regiões padrão da AWS

Canonical ID: 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

Depois de conceder ao ElastiCache o acesso ao objeto de backup .rdb no Amazon S3 usando um ID canônico ou uma política de bucket, restaure o cluster do Redis.

O arquivo de backup do ElastiCache está localizado em um bucket do Amazon S3 em outra região

A mensagem de erro a seguir indica que você está tentando restaurar um backup do ElastiCache localizado em um bucket do Amazon S3 em outra região:

"Permission denied to access S3 object. Please use the S3 object in the same region." (Permissão negada para acessar o objeto S3. Use o objeto do S3 na mesma região.)

Para solucionar esse problema, faça o seguinte:

1.    Copie o backup (.rdb) do bucket do S3 que contém o backup para um bucket do S3 localizado na região em que o cluster Redis está sendo restaurado.

Veja a seguir um exemplo de comando da AWS Command Line Interface (AWS CLI) que você pode usar para copiar entre buckets do Amazon S3 em diferentes regiões:

aws s3 cp s3://SourceBucketName/BackupName.rdb s3://DestinationBucketName/BackupName.rdb --acl bucket-owner-full-control --source-region SourceRegionName --region DestinationRegionName

Observação: se você receber erros ao executar os comandos da AWS CLI, utilize a versão mais recente da AWS CLI.

2.    Depois que a cópia for concluída, confirme se o objeto de backup (.rdb) tem as permissões corretas atribuídas a ele na forma de um ID canônico ou de uma política de buckets. Consulte a seção anterior para obter os IDs canônicos corretos.

Agora que o objeto de backup foi copiado para a região correta e as permissões corretas foram aplicadas, você pode continuar a restaurar o cluster.

Você está restaurando um arquivo .rdb contendo vários bancos de dados para um cluster do ElastiCache com o modo de cluster habilitado

Não é possível restaurar um arquivo de backup do Redis (.rdb) contendo vários bancos de dados para um cluster do ElastiCache com o modo de cluster habilitado. O ElastiCache com o modo de cluster habilitado não é compatível com vários bancos de dados. Todas as chaves devem residir no DB0. Você pode confirmar se essa é a causa da falha de restauração revisando os eventos do ElastiCache.

O exemplo de evento do ElastiCache a seguir mostra que a criação do “teste” do grupo de replicação do Redis falhou devido ao arquivo .rdb que contém vários bancos de dados.

Restore from snapshot failed for node group 0001 in replication group test. To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0. Snapshot ID: arn:aws:s3:::example-bucket/multidb.rdb

Para corrigir o problema, faça o seguinte:

1.    Certifique-se de que todas as chaves sejam migradas para um único banco de dados.

Observação: se o banco de dados de origem estiver localizado no ElastiCache Redis, o comando migrate não será compatível.

2.    Depois que todas as chaves estiverem no mesmo banco de dados, você poderá criar um backup local do banco de dados do Redis, fazer upload do backup para o Amazon S3 e continuar a restaurar para um cluster do ElastiCache com o modo de cluster habilitado.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?