DynamoDB mancata corrispondenza della versione della tabella globale
TL;DR — DynamoDB ha due versioni della tabella globale: 2017.11.29 (Legacy) e 2019.11.21 (Current). La creazione di una tabella globale legacy o l'aggiunta di una replica fallisce quando le tabelle membro non soddisfano i requisiti: le repliche legacy devono essere vuote, condividere lo stesso nome, schema di chiave e GSI corrispondenti, avere DynamoDB flussi (immagini nuove e vecchie) abilitati e utilizzare capacità di scrittura coerente, e il puntamento delle API di una versione alle tabelle dell'altra versione fallisce completamente. Allinea la configurazione di ogni replica (o esegui l'aggiornamento alla versione corrente), quindi riprova.
Cosa significa
ValidationException: Cannot create a global table from a table with ...
ValidationException: ... replicas must have the same ... across all regionsLa versione Legacy (29.11.2017) unisce le tabelle regionali create in modo indipendente in una tabella globale con nome, quindi richiede che le tabelle dei membri siano allineate esattamente. La versione Current (2019.11.21) gestisce la replica sulla tabella stessa (aggiungi repliche con UpdateTable) e sincronizza automaticamente TTL, ridimensionamento automatico, GSI e impostazioni di crittografia a riposo tra le repliche. Gli errori di mancata corrispondenza della versione vengono visualizzati quando le tabelle che stai combinando non sono d'accordo o quando gli strumenti comunicano con la superficie API della versione sbagliata.
Perché succede
- Una tabella di replica non è vuota: le API legacy
CreateGlobalTable/UpdateGlobalTablerichiedono che ogni tabella membro non contenga dati. - Mancata corrispondenza del nome o dello schema della chiave: tutte le repliche devono condividere lo stesso nome di tabella e la stessa chiave primaria.
- GSI non corrispondenti: gli indici secondari globali devono corrispondere tra le repliche nel nome e nella chiave hash/ordinamento.
- Stream disattivati o tipo di visualizzazione errato: ogni replica legacy necessita di DynamoDB flussi abilitati sia con la nuova che con la vecchia immagine dell'elemento.
- Capacità di scrittura incoerente: AWS richiede che le impostazioni della capacità di scrittura siano impostate in modo coerente tra le tabelle di replica e gli indici secondari corrispondenti (ridimensionamento automatico consigliato o unità di capacità di scrittura replicate uguali).
- Mixing delle due versioni — puntando le API legacy (
DescribeGlobalTable,UpdateGlobalTable) a una tabella della versione corrente restituisce GlobalTableNotFoundException invece di funzionare. - CLI/AWS SDK obsoleto: una versione precedente al modello 2019.11.21 non può gestire la gestione delle repliche basata su
UpdateTable.
Come risolverlo
- Standardizzare le tabelle dei membri in tutte le regioni: stesso nome e schema di chiave, GSI corrispondenti, flussi abilitati con immagini nuove e vecchie e obiettivi di capacità di scrittura/ridimensionamento automatico coerenti.
- Controlla lo stato corrente con
DescribeTableper regione (Current) oDescribeGlobalTableSettings(solo Legacy API) e correggi la deriva conUpdateTableoUpdateGlobalTableSettingsrispettivamente. - Aggiorna Legacy → Corrente deliberatamente tramite il flusso Aggiorna versione della console: è necessaria l'autorizzazione
dynamodb:UpdateGlobalTableversionin ogni regione di replica e le repliche continuano a fornire letture e scritture durante l'aggiornamento. - Aggiorna il tuo AWS CLI/SDK a una versione recente prima di gestire le repliche della versione corrente.
- Aggiungi repliche a una tabella di base compatibile: le repliche della versione corrente vengono aggiunte con "UpdateTable" (la tabella potrebbe già contenere dati, ma la regione di destinazione non deve già avere una tabella con quel nome); le repliche legacy devono iniziare vuote.
- Abilita i flussi prima della creazione dell'eredità. Ogni replica dell'eredità necessita di DynamoDB flussi con immagini nuove e vecchie: verifica con
DescribeTablein ogni regione.
Misura in DynoTable
Confronta schema, GSI e impostazioni di flusso tra le regioni prima di creare una tabella globale: cambia con ⌘P, apri ciascuna replica con ⌘K ed espandi i pannelli Indici e Stream uno accanto all'altro.
Stimare il costo di scrittura replicato con il calcolatore dei prezzi. Configura ciascuna regione in Impostazioni → Profili con Connessione di prova. Consulta Connetti a AWS e Installa.
Fonti
- DynamoDB versioni delle tabelle globali (verificato il 13-07-2026)
- CreateGlobalTable - Riferimento Amazon DynamoDB API (verificato il 13-07-2026)
Errori correlati
- ResourceInUseException: una tabella/regione di replica è già in uso.
- ReplicaNotFoundException: non esiste un'area di replica di riferimento.
- Impara: DynamoDB tabelle globali
Riferimenti
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale AWS collegata sopra.