DynamoDB ReplicaNotFoundException

TL;DR — Le réplica de région que tu essaies de mettre à jour ou de supprimer ne fait pas partie de cette table globale. Habituellement un nom de région erroné, un réplica qui a déjà été supprimé, ou un appel qui entre en concurrence avec une autre mise à jour de réplica en cours. Confirme les réplicas actuels avec DescribeTable, puis vise-en un qui existe.

Ce que ça signifie

ReplicaNotFoundException: The specified replica is no longer part of the global table.

Les opérations de tables globales (UpdateGlobalTable, ou UpdateTable avec un ReplicaUpdates/Delete) adressent un réplica par sa région AWS. Ce HTTP 400 signifie que la région que tu as nommée n'est pas actuellement un réplica de la table globale. C'est côté client et non réessayable tant que tu ne vises pas un réplica réel.

Pourquoi ça arrive

  • Code de région erronéus-east-2 alors que le réplica est dans us-east-1, ou une région qui n'a jamais été ajoutée.
  • Réplica déjà supprimé — une suppression contre une région qu'une mise à jour précédente a déjà retirée de la table.
  • Changements de réplica qui se chevauchentUpdateTable ne peut pas s'exécuter tant que la table est encore UPDATING d'un changement précédent, et AWS recommande d'émettre une requête distincte pour chaque ajout/retrait de réplica ; une automatisation en concurrence peut viser un réplica qu'un autre job a déjà retiré.
  • Confondre la principale avec un réplica — opérer sur une région qui n'héberge aucun réplica de cette table.
  • Confusion de version — mélanger l'API legacy Version 2017.11.29 (GlobalTable) et l'API current 2019.11.21 (réplica-sur-table).

Comment le corriger

  1. Liste les réplicas actuels et leur statut :
    aws dynamodb describe-table --table-name <Table> \
      --query "Table.Replicas[].{Region:RegionName,Status:ReplicaStatus}"
  2. Vise une région qui est réellement dans la liste — copie le code de région exactement.
  3. Change un réplica à la fois. Attends que la table revienne à ACTIVE (et que l'ajout/retrait précédent se termine) avant la mise à jour suivante.
  4. Tu supprimes un réplica déjà parti ? Il n'y a rien à faire — traite la ReplicaNotFoundException comme déjà satisfaite pour une suppression.
  5. Utilise l'API current (2019.11.21) — gère les réplicas via UpdateTable ReplicaUpdates, pas l'API legacy de table globale.

Tu gères des tables à travers plusieurs régions ? L'application desktop DynoTable affiche les réplicas de chaque table et leur statut, pour que tu agisses sur une région qui fait vraiment partie de la table globale.

Vérifie d’abord dans DynoTable

Ouvre la table dans DynoTable et vérifie dans les stats de table / la liste de réplicas quelles régions existent réellement avant de lancer un UpdateTable ReplicaUpdates. Change de profil avec ⌘P pour bien regarder le compte propriétaire de la table globale. Quand une région de réplica a disparu, DynoTable l'omet simplement — il n'y a pas de carte de console périmée sur laquelle cliquer.

Recoupe le code de région avec la liste en direct, puis réémets le changement de plan de contrôle depuis ton IaC ou la CLI. Pour les lectures quotidiennes entre réplicas, garde un profil DynoTable par région et change avec ⌘1⌘9 plutôt que de deviner des ARN. Le query builder reste sur la région du profil actif : tu ne mélangeras jamais une Query us-east-1 avec un nom de table us-west-2.

Sources

Erreurs liées

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.