DynamoDB ItemCollectionSizeLimitExceededException
TL;DR — Solo le tabelle con un indice secondario locale (LSI) hanno questo limite: tutti gli elementi che condividono una chiave di partizione (la "raccolta di elementi") possono avere una dimensione massima di 10 GB. Una delle tue chiavi di partizione l'ha attraversata. Riprogettazione in modo che nessuna chiave di partizione singola accumuli dati illimitati o elimina LSI.
Cosa significa
ItemCollectionSizeLimitExceededException: Collection size exceeded.Una raccolta di elementi è ogni elemento con lo stesso valore della chiave di partizione — nella tabella di base e in tutti i suoi LSI. Le tabelle senza un LSI non hanno un limite di dimensione per raccolta (la dimensione complessiva di una tabella non è vincolata). Le tabelle con un LSI limitano ciascuna raccolta a 10 GB e questo errore significa che una scrittura spingerebbe una raccolta oltre tale limite. Il limite non si applica agli indici secondari globali.
Ritorna come HTTP 400 e AWS lo elenca come OK per riprovare, ma un nuovo tentativo riesce solo quando la raccolta si è ridotta al di sotto dei 10 GB. Le letture e le scritture che riducono le dimensioni della raccolta (eliminazioni, rimozione o taglio di attributi) sono ancora consentite, quindi puoi trovare una via d'uscita.
Perché succede
- Una chiave di partizione attiva/illimitata: una chiave (un grande inquilino, un utente popolare) accumula molti più elementi di altre.
- Un LSI potrebbe non essere necessario: il limite di 10 GB esiste solo perché la tabella ha un LSI.
- Crescita di sola aggiunta con un'unica chiave di partizione nel tempo.
Come risolverlo
- Ripartizione della chiave di partizione. Suddividi l'entità di grandi dimensioni su più chiavi di partizione (ad esempio
TENANT#42#1,TENANT#42#2) in modo che nessuna singola raccolta diventi illimitata. - Sostituisci LSI con GSI. I GSI hanno una propria chiave di partizione e nessun limite alla dimensione della raccolta di elementi: per la maggior parte dei modelli di accesso un GSI è comunque la scelta migliore (e può essere aggiunto/rimosso dopo la creazione della tabella, a differenza di un LSI).
- Archivia gli articoli freddi dalla raccolta caldi (in una tabella separata o S3).
- Monitora la dimensione della raccolta prima di sbattere contro il muro. "ReturnItemCollectionMetrics: SIZE" sulle scritture restituisce la dimensione stimata della raccolta in modo da poter avvisare prima che le scritture falliscano.
Individualo in DynoTable
Scopri quali chiavi di partizione contengono il maggior numero di elementi prima che una raccolta raggiunga i 10 GB: apri la tabella con ⌘K, ordina per chiave di partizione ed esegui la scansione delle chiavi con elenchi di elementi insolitamente lunghi. Il calcolatore della dimensione dell'articolo aiuta a stimare la crescita per articolo quando pianifichi un re-shard.
Utilizza il calcolatore dei prezzi per confrontare l'amplificazione di scrittura LSI con un'alternativa GSI. Cambia profilo con ⌘P; configurarli in Impostazioni → Profili. Consulta Connetti a AWS e Installa.
Fonti
- Indici secondari locali (verificato il 13-07-2026)
- Gestione degli errori con DynamoDB (verificato il 2026-07-13)
Errori correlati
- La dimensione dell'elemento ha superato la dimensione massima consentita: il limite di 400 KB per articolo.
- ProvisionedThroughputExceededException
- Impara: GSI vs LSI · Raccolte di oggetti
Riferimenti
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB
- Indici secondari locali: Guida per sviluppatori Amazon DynamoDB
- Quote in Amazon DynamoDB — Guida per sviluppatori Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.