DynamoDB ResourceInUseException
TL;DR — Hai provato a eseguire un'operazione su una tabella che già esiste o è ancora in fase di transizione (CREATING / UPDATING / DELETING). Controlla prima lo stato della tabella o rendi la creazione idempotente ignorando "già esistente".
Cosa significa
ResourceInUseException: Table already exists: <name>
ResourceInUseException: Attempt to change a resource which is still in use: Table is being created/deleted
# what the engine actually returns, reproduced against DynamoDB Local:
ResourceInUseException: Cannot create preexisting tableLe operazioni del piano di controllo ("CreateTable", "DeleteTable", "UpdateTable") richiedono che la tabella sia in uno stato compatibile. Questo errore significa che non lo è: o esiste già o è a metà transizione e DynamoDB non accetterà un'altra operazione finché non si assesta su "ACTIVE". DynamoDB lo restituisce con lo stato HTTP 400 e non è possibile riprovare così com'è: riprovare la richiesta identica fallisce finché lo stato non cambia (attendere il completamento della transizione o modificare la richiesta).
Perché succede
- Rieseguire
CreateTableper una tabella che già esiste (una migrazione/distribuzione ripetuta, test che non puliscono). - Operazione durante una transizione: creazione di un indice, eliminazione o aggiornamento mentre la tabella è ancora in fase di "CREAZIONE"/"AGGIORNAMENTO".
- Una gara: due processi che creano la stessa tabella contemporaneamente.
Come risolverlo
- Controlla lo stato prima di agire.
DescribeTable→ procedi solo quandoTableStatusèACTIVE; usa un cameriere ("waitUntilTableExists") per bloccare finché non si sistema. - Rendi la creazione idempotente. Cattura
ResourceInUseExceptionsuCreateTablee trattalo come un successo (la tabella che volevi esiste). - Serializza le operazioni della tabella nei test/migrazioni in modo che due non vengano eseguiti contemporaneamente; ripulire le tabelle di test durante lo smontaggio.
Esempio
import {DynamoDBClient, CreateTableCommand, ResourceInUseException} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({});
try {
await client.send(new CreateTableCommand(tableDef));
} catch (err) {
if (!(err instanceof ResourceInUseException)) throw err;
// Table already exists — that's fine, carry on.
}FAQ
Cosa significa ResourceInUseException in DynamoDB? Un'operazione del piano di controllo ("CreateTable", "DeleteTable", "UpdateTable") ha preso di mira una tabella che esiste già o è ancora in fase di transizione attraverso CREATING, UPDATING o DELETING. DynamoDB non accetterà un'altra operazione finché la tabella non sarà impostata su ATTIVO.
Come faccio a rendere idempotente CreateTable? Cattura la ResourceInUseException e trattala come un successo: la tabella che volevi esiste. In alternativa, controlla prima "DescribeTable" e crea solo quando la tabella è assente, utilizzando un cameriere come "waitUntilTableExists" per bloccarla finché non si sistema.
Percorso in DynoTable
Quando una migrazione esegue nuovamente CreateTable, DynoTable mostra la tabella non appena
esiste: aprilo con ⌘K → Apri tabella per nome mentre il tuo script
riprova. Impostazioni tabella in una scheda aperta visualizza "TableStatus" ("CREATING",
UPDATING, ACTIVE) in modo da poter attendere "ACTIVE" prima di emettere quello successivo
cambiamento del piano di controllo. Per l'iterazione locale, puntare un profilo locale su
http://localhost:8000 (In esecuzione DynamoDB Locale) e
usa il convertitore DynamoDB JSON per caricare il seed
articoli una volta che la tabella si è sistemato.
Per le tabelle cloud bloccate in UPDATING, Impostazioni tabella elenca anche in volo GSI
backfill: attendi "ACTIVE" su ogni indice prima del successivo "UpdateTable" in
il tuo script di distribuzione.
Contro DynamoDB Local, la stessa ResourceInUseException appare quando viene eseguito un test
riesegue "CreateTable" su un'istanza in memoria che non è mai stata cancellata: tratta
Locale come cloud e rileva l'errore o attendi "ACTIVE".
Errori correlati
- ResourceNotFoundException — la tabella non esiste.
- ThrottlingException: troppe operazioni sul piano di controllo.
- Impara: DynamoDB migrazioni
Fonti
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB (verificato il 13-07-2026)
- CreateTable - Riferimento Amazon DynamoDB API (verificato il 13-07-2026)
- UpdateTable - Riferimento Amazon DynamoDB API (verificato il 13-07-2026)
- DeleteTable - Riferimento Amazon DynamoDB API (verificato il 13-07-2026)