ReplicaAlreadyExistsException
TL;DR — La Región que estás añadiendo ya está en el grupo de replicación de la tabla global. La adición no es idempotente, así que una repetición de la misma petición (reintento, despliegue reproducido, IaC desincronizada) falla una vez que la primera tuvo éxito. Describe primero la tabla y crea solo las réplicas que no estén — o trata esta excepción como "ya hecho" y sigue adelante.
Qué significa
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.La gestión de réplicas es un cambio en el plano de control con una precondición estricta: Create requiere que la Región esté ausente, Delete requiere que esté presente. Pedir crear eu-west-1 cuando eu-west-1 ya replica la tabla viola esa precondición — el estado que querías ya existe.
Por qué ocurre
- Un paso de aprovisionamiento reintentado o reproducido — el primer intento tuvo éxito (quizá después de que un tiempo de espera agotado ocultara ese éxito), y el reintento vuelve a añadir la misma Región.
- Desincronización de infraestructura como código — la réplica se añadió manualmente en la consola y luego el pipeline de IaC intenta añadirla de nuevo.
- Dos rutas de automatización en carrera — despliegues paralelos o trabajos de expansión de regiones enviando ambos la misma creación de réplica.
Cómo solucionarlo
Comprueba el grupo de replicación antes de mutarlo:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'Haz la operación idempotente — captura esta excepción al crear (y
ReplicaNotFoundExceptional borrar) y trátala como éxito; la tabla ya está en el estado deseado:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }Reconcilia la IaC con la realidad — importa la réplica añadida manualmente a tu stack en lugar de dejar que cada despliegue vuelva a intentar la creación.
Serializa los cambios de réplica — una actualización de réplica a la vez por tabla; espera a que la tabla vuelva a
ACTIVE(y a que la nueva réplica salga deCREATING) antes del siguiente cambio.
Confirmar que una réplica realmente sirve datos — no solo que la API la aceptó — es cuestión de mirar la tabla: la aplicación de escritorio DynoTable navega directamente por la réplica de cada Región, y la calculadora de precios de DynamoDB muestra el coste continuo que añade la Región adicional.
Errores relacionados
- ReplicaNotFoundException — la imagen espejo: borrar una Región que no está en el grupo.
- GlobalTableNotFoundException — confusión entre la API legada y la actual.
- ResourceInUseException — la tabla está en plena modificación.
- Aprende: DynamoDB global tables
References
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
Última verificación el 2026-07-13 con la documentación oficial de AWS enlazada arriba.