Passer au contenu

Comment résoudre l'erreur « Échec de création » ou « Autorisation refusée » qui survient lorsque j'essaie de restaurer mon cluster ElastiCache depuis S3 ?

Lecture de 6 minute(s)
0

Je souhaite résoudre l'erreur « Échec de la création » ou « Autorisation refusée » qui survient lorsque j'essaie de restaurer mon cluster Amazon ElastiCache à partir d'Amazon Simple Storage Service (Amazon S3).

Brève description

Les motifs courants d'échec d’une restauration de sauvegarde ElastiCache depuis Amazon S3 sont les suivants :

  • Vous avez tenté de restaurer une sauvegarde en dehors des contraintes de sauvegarde.
  • ElastiCache n'a pas pu récupérer le fichier depuis Amazon S3.
  • Le fichier de sauvegarde ElastiCache se trouve dans un compartiment Amazon S3 appartenant à une autre région AWS.
  • Vous restaurez un fichier rdb qui contient plusieurs bases de données dans un cluster ElastiCache dont le mode cluster est activé.

Résolution

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

Avant de restaurer une sauvegarde ElastiCache for Redis, vous devez vous familiariser avec les contraintes de sauvegarde :

  • Vous ne pouvez pas restaurer une sauvegarde utilisant un cluster Redis avec le mode cluster activé vers un cluster Redis avec le mode cluster désactivé.
  • Lorsque vous restaurez une sauvegarde à partir d'un cluster ElastiCache avec le mode cluster activé, vous ne pouvez pas désactiver le mode cluster dans la console ElastiCache. Seule l'option permettant d’activer le mode cluster est disponible.
  • Lorsque vous exportez une sauvegarde contenant un cluster ElastiCache dont le mode cluster est activé vers Amazon S3, plusieurs fichiers rdb sont créés. Si vous initialisez la sauvegarde depuis Amazon S3 avec un seul fichier rdb de sauvegarde, seules les clés d'une partition seront intégrées au cluster. Si vous essayez de contourner ce problème avec un fichier générique *rdb, vous obtiendrez l'erreur suivante.
    « Error: Object or bucket does not exist for S3 object: 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.
  • Vous ne pouvez pas exporter la sauvegarde utilisant la hiérarchisation des données vers Amazon S3. De plus, vous ne pouvez pas restaurer une sauvegarde utilisant la hiérarchisation des données ElastiCache depuis Amazon S3. Pour en savoir plus, consultez la page Limites.
  • Dans le cas de fichiers rdb contenant plusieurs bases de données, vous ne pouvez pas restaurer un cluster Redis (mode cluster désactivé) vers un cluster Redis (mode cluster activé). Lorsque 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 DB 0. »

ElastiCache n'a pas pu récupérer le fichier depuis Amazon S3

Si ElastiCache ne dispose pas des autorisations nécessaires pour accéder à la sauvegarde ElastiCache stockée dans le compartiment Amazon S3, l'erreur suivante se produit :

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

Pour identifier les autorisations à l’origine de cette erreur, vous devez examiner vos événements ElastiCache. Lors de cet examen, vérifiez que votre région correspond à l'une des régions suivantes :

Dans le cas d’une région d'acceptation, vous devez disposer d'une stratégie de compartiment qui permet à ElastiCache de récupérer le fichier de sauvegarde depuis Amazon S3.
Si votre compartiment Amazon 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 (Pékin), Chine (Ningxia) et AWS GovCloud (US, côte ouest) est différent de celui des régions AWS par défaut :

  • Chine (Pékin) et Chine (Ningxia) - b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83
  • AWS GovCloud (US, côte ouest) - 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
  • Régions AWS par défaut - 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

Lorsque vous utilisez un ID canonique ou une stratégie de compartiment pour accorder à ElastiCache l'accès à l'objet de sauvegarde **rdb, vous devez **restaurez le cluster Redis.

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

Si vous essayez de restaurer une sauvegarde ElastiCache qui se trouve dans un compartiment Amazon S3 appartenant à une autre région, l'erreur suivante se produit :

« Permission denied to access S3 object. Please use the S3 object in the same region. »

Pour corriger cette erreur, procédez comme suit :

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

  1. Utilisez la commande suivante pour copier le fichier de sauvegarde rdb depuis le compartiment Amazon S3. Vérifiez que le compartiment contient la sauvegarde dans la région où le cluster Redis est en cours de restauration. Pour en savoir plus, consultez la page Quelles sont les meilleures pratiques à suivre pour la migration de mon cluster ElastiCache for Redis ?

    Remarque : remplacez example-source-bucket, example-destination-bucket, example-backup, example-source-region et example destination-region par les valeurs de nom appropriées.

    aws s3 cp s3://example-source-bucket/example-backup.rdb s3://example-destination-bucket/example-backup.rdb --acl bucket-owner-full-control --source-region example-source-region --region example-destination-region
  2. Vérifiez que les autorisations appropriées sont attribuées au fichier de sauvegarde rdb (ID canonique ou stratégie de compartiment).

  3. Poursuivez la restauration du cluster.

Vous restaurez un fichier rdb qui contient plusieurs bases de données dans un cluster ElastiCache dont le mode cluster est activé

Si vous restaurez un fichier rdb contenant plusieurs bases de données dans un cluster ElastiCache avec le mode cluster activé, l'erreur suivante se produit :

« 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 déterminer le motif de l'échec de la restauration, vous devez examiner vos événements ElastiCache.

Pour corriger cette erreur, procédez comme suit :

  1. Vérifiez que toutes les clés sont migrées vers une base de données unique. Pour en savoir plus, consultez la page Migrate sur le site Web de Redis.
    Remarque : si la base de données source se trouve sur ElastiCache Redis, la commande migrate ne sera pas prise en charge. Pour contourner ce problème, vous pouvez utiliser d'autres outils Redis, tels que RIOT. Pour en savoir plus, consultez la page riot sur le site Web de Redis.
  2. Créez une sauvegarde locale de votre base de données Redis.
  3. Téléchargez la sauvegarde sur Amazon S3.
  4. Poursuivez la restauration dans un cluster ElastiCache (mode cluster activé).
AWS OFFICIELA mis à jour il y a 2 ans