Comment puis-je résoudre les problèmes de restauration de mon cluster ElastiCache à partir de S3 ?

Dernière mise à jour : 05-08-2022

Lors de la restauration de ma sauvegarde Amazon ElastiCache for Redis à partir d'Amazon Simple Storage Service (Amazon S3), la création du cluster échoue. Je reçois le message d'erreur « Create-failed » (Échec de la création) ou « Permission denied » (Autorisation refusée). Comment puis-je résoudre ce problème ?

Brève description

Voici les raisons courantes pour lesquelles la restauration d'une sauvegarde ElastiCache à partir d'Amazon S3 échoue :

  • Vous essayez de restaurer une sauvegarde en dehors des contraintes de sauvegarde.
  • ElastiCache n'a pas pu récupérer le fichier à partir d'Amazon S3.
  • Le fichier de sauvegarde ElastiCache se trouve dans un compartiment Amazon S3 dans une autre région.
  • Vous restaurez un fichier .rdb contenant plusieurs bases de données dans un cluster ElastiCache (mode cluster activé).

Résolution

Vous essayez de restaurer une sauvegarde en dehors des contraintes de sauvegarde

Lors de la restauration d'une sauvegarde ElastiCache for Redis, il est important de prendre en compte les contraintes de sauvegarde suivantes :

  • Vous ne pouvez pas effectuer de restauration à partir d'une sauvegarde créée à l'aide d'un cluster Redis (mode cluster activé) vers un cluster Redis (mode cluster désactivé).
    • Lors de la restauration d'une sauvegarde effectuée à partir d'un cluster ElastiCache (mode cluster activé), vous ne pouvez pas sélectionner l'option Cluster mode disabled (Mode cluster désactivé) dans la console ElastiCache. Seule l'option Cluster mode enabled (Mode cluster activé) est disponible.
    • Lorsque vous exportez une sauvegarde de cluster ElastiCache (mode cluster activé) vers Amazon S3, plusieurs fichiers .rdb sont créés (un pour chaque partition). Si vous essayez de distribuer la sauvegarde à partir d'Amazon S3, vous ne pouvez référencer qu'une seule sauvegarde (.rdb), ce qui entraîne la distribution des clés d'une seule partition. Si vous essayez de contourner ce problème en incluant un caractère générique, l'erreur suivante se produit :
      Error: Object or bucket does not exist for S3 object: examplebucket/cluster-mode-enabled-*.rdb (Erreur : l'objet ou le compartiment n'existe pas pour l'objet S3 : examplebucket/cluster-mode-enabled-*.rdb).
  • Vous ne pouvez pas restaurer une sauvegarde à partir d'un cluster qui utilise la hiérarchisation des données. Par exemple, vous ne pouvez pas restaurer un nœud r6gd dans un cluster qui n'utilise pas la hiérarchisation des données, tel qu'un nœud r6g.
  • Vous ne pouvez pas effectuer de restauration à partir d'un cluster Redis (mode cluster désactivé) vers un cluster Redis (mode cluster activé) si le fichier .rdb fait référence à plusieurs bases de données. Si vous tentez de le faire, l'erreur suivante se produit :
    Error: To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB0 (Erreur : pour restaurer un instantané en mode cluster, toutes les clés du fichier RDB doivent résider dans DB0)

ElastiCache n'a pas pu récupérer le fichier à partir d'Amazon S3

Cette erreur se produit lorsque ElastiCache ne dispose pas des autorisations nécessaires pour accéder à la sauvegarde ElastiCache stockée dans le compartiment S3. Vous pouvez vérifier le problème d'autorisations en consultant les événements ElastiCache.

L'exemple d'événement ElastiCache suivant montre que la création du « test » du groupe de réplication Redis a échoué, car ElastiCache n'a pas pu récupérer le fichier de sauvegarde à partir de S3 :

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

Après avoir déterminé que la cause de l'erreur provient du fait qu'ElastiCache n'a pas pu récupérer le fichier à partir d'Amazon S3, vérifiez que votre région correspond à l'une des régions suivantes :

Une région opt-in nécessite une politique de compartiment qui permet à ElastiCache de récupérer le fichier de sauvegarde à partir d'Amazon S3.

Si votre compartiment S3 se trouve dans l'une des régions suivantes, vous devez autoriser le service ElastiCache à accéder au fichier de sauvegarde dans S3 :

Remarque : l'ID canonique des régions Chine (Beijing), Chine (Ningxia) et AWS GovCloud (US, côte ouest) est différent de celui des régions AWS par défaut :

Chine (Beijing) et Chine (Ningxia)

Canonical ID: b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

Région AWS GovCloud (US, côte ouest)

Canonical ID: 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

Régions par défaut AWS

Canonical ID: 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

Après avoir accordé à ElastiCache l'accès à l'objet de sauvegarde .rdb dans Amazon S3 à l'aide d'un ID canonique ou d'une politique de compartiment, restaurez le cluster Redis.

Le fichier de sauvegarde ElastiCache se trouve dans un compartiment Amazon S3 d'une autre région

Le message d'erreur suivant indique que vous essayez de restaurer une sauvegarde ElastiCache située dans un compartiment Amazon S3 dans une autre région :

« Permission denied to access S3 object. Please use the S3 object in the same region. » (Accès à l'objet S3 refusé. Veuillez utiliser l'objet S3 de la même région)

Pour résoudre ce problème, procédez comme suit :

1.    Copiez la sauvegarde (.rdb) du compartiment S3 qui contient la sauvegarde vers un compartiment S3 situé dans la région où le cluster Redis est restauré.

Voici un exemple de commande d'Interface de la ligne de commande AWS (AWS CLI) que vous pouvez utiliser pour copier entre des compartiments Amazon S3 dans différentes régions :

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

Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l'AWS CLI.

2.    Une fois la copie terminée, vérifiez que l'objet de sauvegarde (.rdb) dispose des autorisations correctes qui lui sont attribuées sous la forme d'un ID canonique ou d'une politique de compartiment. Reportez-vous à la section précédente pour connaître les ID canoniques corrects.

Maintenant que l'objet de sauvegarde est copié dans vers la région correcte et que les autorisations appropriées sont appliquées, vous pouvez poursuivre la restauration du cluster.

Vous restaurez un fichier .rdb qui contient plusieurs bases de données dans un cluster ElastiCache (mode cluster activé)

Vous ne pouvez pas restaurer un fichier de sauvegarde Redis (.rdb) qui contient plusieurs bases de données dans un cluster ElastiCache (mode cluster activé). ElastiCache (mode cluster activé) ne prend pas en charge plusieurs bases de données. Toutes les clés doivent résider dans DB0. Vous pouvez déterminer s'il s'agit de la cause de l'échec de la restauration en consultant les événements ElastiCache.

L'exemple d'événement ElastiCache suivant montre que la création du « test » du groupe de réplication Redis a échoué parce que le fichier .rdb contient plusieurs bases de données.

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

Pour résoudre le problème, procédez comme suit :

1.    Assurez-vous que toutes les clés sont migrées vers une seule base de données.

Remarque : si la base de données source se trouve sur ElastiCache Redis, la commande migrate n'est pas prise en charge.

2.    Une fois que toutes les clés se trouvent sur la même base de données, vous pouvez créer une sauvegarde locale de votre base de données Redis, charger la sauvegarde sur Amazon S3 et poursuivre la restauration dans un cluster ElastiCache (mode cluster activé).


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?