DynamoDB LimitExceededException
TL;DR: hai eseguito troppe operazioni sul piano di controllo contemporaneamente (o hai raggiunto un limite di tabella/account). Fino a 500 tabelle e indici possono trovarsi nello stato "CREAZIONE"/"AGGIORNAMENTO"/"ELIMINAZIONE" alla volta nel tuo account. Serializza le operazioni della tabella, attendi "ACTIVE" e riprova con il backoff.
Cosa significa
LimitExceededException: Too many operations for a given subscriber.Questo è un errore del piano di controllo: proviene da CreateTable, UpdateTable, DeleteTable, creazione dell'indice, ripristini e chiamate simili, non da GetItem/PutItem/Query. DynamoDB ti indica che hai superato un limite di concorrenza o di account. È un HTTP 400 e AWS lo elenca come OK per riprovare: la condizione viene cancellata al termine delle operazioni in volo.
Perché succede
- Troppe operazioni simultanee su tabelle/indici: il numero cumulativo di tabelle e indici nello stato "CREAZIONE", "ELIMINAZIONE" o "AGGIORNAMENTO" non può superare 500 per account/regione. (Sono consentite fino a 500 operazioni simultanee sulle tabelle per account —
CreateTable,UpdateTable,DeleteTable,UpdateTimeToLive,RestoreTableFromBackup,RestoreTableToPointInTime— e solo fino a 250 richieste simultanee quando si creano tabelle con indici secondari.) - Distribuzioni di stack in blocco: la creazione o l'eliminazione di molte tabelle (o molti GSI) da parte di CloudFormation/CDK/Terraform supera contemporaneamente il budget di concorrenza.
- Quote delle risorse dell'account: raggiungimento della quota flessibile di 2.500 tabelle per account/regione o del limite di 50 processi di importazione simultanea.
- DynamoDB Uso improprio degli stream: chiamata a
GetRecordscon unLimitmaggiore di 1000 o più di 2 processi che leggono contemporaneamente dallo stesso shard di stream. - Nota: un secondo
UpdateTableemesso mentre la stessa tabella è ancora inAGGIORNAMENTOviene visualizzato come ResourceInUseException, non questo errore, ma entrambi significano "attendi primaACTIVE".
Come risolverlo
- Serializza le operazioni del piano di controllo: attendi che una tabella (e ciascuna GSI) diventi "ATTIVA" prima di apportare la modifica successiva. Effettua il sondaggio su "DescribeTable" e seleziona "TableStatus === 'ACTIVE'".
- Riprova con backoff esponenziale: il limite è transitorio; un tentativo annullato di solito ha successo una volta che le operazioni in volo si esauriscono.
- Limita le distribuzioni in blocco: dividi uno stack di grandi dimensioni in modo da non creare centinaia di tabelle/GSI contemporaneamente oppure aggiungi un ordine esplicito
DependsOnin modo che non si attivino tutti insieme. - Controlla le tue quote di servizio: se sei vicino al limite di tabelle per account, richiedi un aumento della quota in Quote di servizio anziché riprovare all'infinito.
- Aggiungi GSI uno alla volta: puoi creare o eliminare un solo indice secondario globale per operazione "UpdateTable", quindi serializza le modifiche dell'indice e attendi ogni recupero.
FAQ
Come posso correggere l'eccezione LimitExceededException in DynamoDB? Interrompere l'emissione di operazioni sul piano di controllo (CreateTable/UpdateTable/DeleteTable/modifiche dell'indice) in parallelo. Attendi che ogni tabella e indice raggiungano ATTIVO prima della modifica successiva, mantieni il conteggio delle tabelle in CREAZIONE/AGGIORNAMENTO/ELIMINAZIONE sotto il limite dell'account e riprova con il backoff esponenziale.
LimitExceededException è un errore di limitazione? Si tratta di un errore di concorrenza/limite del piano di controllo, non di una limitazione del piano dati. La limitazione del piano dati viene invece visualizzata come ProvisionedThroughputExceededException, ThrottlingException o RequestLimitExceeded.
Punta DynoTable a Local
DynoTable è un client del piano dati: GetItem, Query e Scan non consumano
il budget di concorrenza del piano di controllo protetto da questo errore. Se uno script di distribuzione ha successo
LimitExceededException durante la creazione delle tabelle, utilizza DynoTable per sfogliare le tabelle
che ha già raggiunto "ACTIVE" e convalida lo schema da Impostazioni tabella while
i tuoi tentativi IaC. Per gli stack locali, esegui DynamoDB Local con -sharedDb e
connettersi tramite un profilo locale (Running DynamoDB Local) quindi
puoi ispezionare le distribuzioni parziali senza aspettare che ogni GSI finisca in AWS.
Il pianificatore di progettazione a tabella singola aiuta a disegnare
forme di tabella prima di attivare un'altra "CreateTable" in un account occupato.
Errori correlati
- ResourceInUseException: un'operazione su una tabella che è già stata modificata o già esiste.
- ThrottlingException: limitazione della velocità dei dati/piano di controllo.
- RequestLimitExceeded: limite della velocità di richiesta dell'account.
- Impara: DynamoDB migrazioni
Fonti
Gestione degli errori con DynamoDB — Guida per sviluppatori di Amazon DynamoDB (verificato il 13-07-2026)
UpdateTable - Riferimento Amazon DynamoDB API (verificato il 13-07-2026)
Quote in Amazon DynamoDB — Guida per gli sviluppatori di Amazon DynamoDB (verificato il 13-07-2026)