DynamoDB LimitExceededException
TL;DR: Emitiste demasiadas operaciones del plano de control a la vez (o alcanzaste un límite de tabla/cuenta). Hasta 500 tablas e índices pueden estar en estado CREATING/UPDATING/DELETING en su cuenta a la vez. Serializa las operaciones de tu tabla, espera ACTIVE y vuelve a intentarlo con backoff.
Qué significa
LimitExceededException: Too many operations for a given subscriber.Este es un error de plano de control — proviene de CreateTable, UpdateTable, DeleteTable, la creación de índices, las restauraciones y llamadas similares, no de GetItem/PutItem/Query. DynamoDB te está diciendo que has superado un límite de concurrencia o de cuenta. Es un HTTP 400, y AWS lo lista como reintentable — la condición se despeja a medida que terminan las operaciones en vuelo.
Por qué ocurre
- Demasiadas operaciones de tabla/índice concurrentes — el número acumulado de tablas e índices en estado
CREATING,DELETINGoUPDATINGno puede superar 500 por cuenta/región. (Se permiten hasta 500 operaciones de tabla simultáneas por cuenta —CreateTable,UpdateTable,DeleteTable,UpdateTimeToLive,RestoreTableFromBackup,RestoreTableToPointInTime— y solo hasta 250 solicitudes concurrentes al crear tablas con índices secundarios.) - Despliegues de stack masivos — CloudFormation/CDK/Terraform creando o desmontando muchas tablas (o muchos GSI) simultáneamente rebasa el presupuesto de concurrencia.
- Cuotas de recursos de la cuenta — alcanzar la cuota flexible de 2.500 tablas por cuenta/región, o el límite de 50 trabajos de importación simultáneos.
- Uso indebido de DynamoDB Streams — llamar a
GetRecordscon unLimitmayor que 1000, o más de 2 procesos leyendo del mismo shard de streams a la vez. - Nota: un segundo
UpdateTableemitido mientras la misma tabla sigue enUPDATINGaparece como ResourceInUseException, no como este error — pero ambos significan "espera primero aACTIVE".
Cómo solucionarlo
- Serializa las operaciones de plano de control — espera a que una tabla (y cada GSI) pase a
ACTIVEantes de emitir el siguiente cambio sobre ella. SondeaDescribeTabley condiciona aTableStatus === 'ACTIVE'. - Reintenta con backoff exponencial — el límite es transitorio; un reintento con backoff suele tener éxito una vez que las operaciones en vuelo drenan.
- Modera los despliegues masivos — divide un stack grande para no crear cientos de tablas/GSI a la vez, o añade un orden explícito con
DependsOnpara que no se disparen todos juntos. - Comprueba tus cuotas de servicio — si estás cerca del límite de tablas por cuenta, solicita un aumento de cuota en Service Quotas en lugar de reintentar eternamente.
- Añade GSI de uno en uno — solo puedes crear o eliminar un índice secundario global por operación
UpdateTable, así que serializa los cambios de índice y espera cada backfill.
FAQ
¿Cómo soluciono LimitExceededException en DynamoDB? Deja de emitir operaciones de plano de control (CreateTable/UpdateTable/DeleteTable/cambios de índice) en paralelo. Espera a que cada tabla e índice llegue a ACTIVE antes del siguiente cambio, mantén el recuento de tablas en CREATING/UPDATING/DELETING por debajo del tope de la cuenta, y reintenta con backoff exponencial.
¿Es LimitExceededException un error de throttling? Es un error de concurrencia/límite de plano de control, no throttling de plano de datos. El throttling de plano de datos aparece como ProvisionedThroughputExceededException, ThrottlingException o RequestLimitExceeded en su lugar.
Apunta DynoTable a Local
DynoTable es un cliente de plano de datos — GetItem, Query y Scan no consumen
el presupuesto de concurrencia de plano de control que vigila este error. Si un script
de despliegue choca con LimitExceededException al crear tablas, usa DynoTable para
explorar las tablas que ya llegaron a ACTIVE y validar el esquema desde Ajustes de la tabla
mientras tu IaC reintenta. Para stacks locales, ejecuta DynamoDB Local con -sharedDb y
conéctate mediante un perfil Local (Ejecutar DynamoDB Local) para
que puedas inspeccionar despliegues parciales sin esperar a que cada GSI termine en AWS.
El planificador de diseño de tabla única ayuda a esbozar
formas de tabla antes de que dispares otro CreateTable en una cuenta ocupada.
Errores relacionados
- ResourceInUseException — una operación sobre una tabla que ya se está modificando o que ya existe.
- ThrottlingException — limitación de tasa de plano de datos/control.
- RequestLimitExceeded — límite de tasa de solicitudes de la cuenta.
- Aprende: Migraciones de DynamoDB
Fuentes
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide (verificado 2026-07-13)
- UpdateTable — Amazon DynamoDB API Reference (verificado 2026-07-13)
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide (verificado 2026-07-13)