Valore fornito in ExpressionAttributeValues non utilizzato nelle espressioni
TL;DR — Hai fornito un segnaposto di valore in "ExpressionAttributeValues" (ad esempio ":status") a cui nessuna espressione fa riferimento. DynamoDB richiede che ogni :value dichiarato venga utilizzato in una KeyConditionExpression, FilterExpression, UpdateExpression o ConditionExpression. Rimuovi il valore orfano o correggi l'espressione che doveva utilizzarlo.
Cosa significa
ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in
expressions: keys: {:status}
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in expressions: keys: {:status}"ExpressionAttributeValues" è la mappa di sostituzione per i valori letterali rispetto ai quali le tue espressioni vengono confrontate (:status, :min, ...). DynamoDB applica un contratto a due vie: ogni :segnaposto utilizzato in un'espressione deve essere dichiarato, e ogni segnaposto dichiarato deve essere utilizzato. Un valore rimanente a cui nessuna espressione fa riferimento attiva questa ValidationException HTTP 400: lato client e non riprovabile finché le mappe non corrispondono.
Perché succede
- Un valore obsoleto dopo aver modificato l'espressione — hai eliminato
#s = :statusdall'espressione ma hai lasciato:statusnella mappa dei valori. - Deriva copia-incolla: riutilizzo di una mappa di valori di una richiesta precedente che aveva più condizioni di quella corrente.
- Una richiesta generata che dichiara in eccesso: un builder ha aggiunto
:vper una clausola di filtro che è stata successivamente rimossa. - Un miscuglio di nome e valore: intendevi
#status(un alias di nome) ma hai dichiarato:status(un valore). - Un errore di battitura — l'espressione utilizza
:statmentre la mappa dichiara:status.
Come risolverlo
- Elimina il valore inutilizzato i nomi dei messaggi da "ExpressionAttributeValues".
- Mantieni i valori in sincronia con l'espressione — dichiara un
:placeholdersolo quando un'espressione vi fa riferimento. - Conferma nomi e valori — I segnaposto
:vanno inExpressionAttributeValues; Gli alias "#" vanno in "ExpressionAttributeNames". - Costruisci insieme l'espressione e le sue mappe in modo che nessun valore rimanga in sospeso.
- Cerca nella stringa dell'espressione ogni
:keynella tua mappa. Un errore di battitura di un singolo carattere (:statvs:status) lascia inutilizzato il valore dichiarato.
Interroga in DynoTable
DynoTable genera "ExpressionAttributeValues" dalle righe del filtro che configuri: a ogni ":placeholder" nell'output viene fatto riferimento nella stringa dell'espressione. Apri una tabella con ⌘K, aggiungi filtri nel pannello delle query e copia le mappe emesse nella chiamata SDK per eliminare i valori orfani.
Durante il debug di una richiesta non riuscita, incolla l'espressione nel Generatore di espressioni e confronta la sua mappa di valori con la tua. Il cambio di profilo (⌘P) e Test connessione in Impostazioni → Profili confermano che stai testando rispetto alla stessa tabella. Consulta Connetti a AWS e Installa.
Fonti
- Utilizzo dei valori degli attributi dell'espressione in DynamoDB (verificato il 13-07-2026)
- DynamoDB esempi di espressioni di condizione (verificato il 13-07-2026)
Errori correlati
- Valore fornito in ExpressionAttributeNames non utilizzato nelle espressioni — la stessa regola per gli alias "#name".
- ExpressionAttributeValues contiene un valore non valido — un valore non valido o vuoto nella mappa e la mancata corrispondenza inversa: un
:placeholderreferenziato ma mai fornito. - L'espressione fornita fa riferimento a un attributo che non esiste nell'elemento — l'espressione legge un attributo dell'elemento che non è presente.
- Impara: Nomi e valori delle espressioni
Riferimenti
- Utilizzo dei valori degli attributi di espressione nella Guida per sviluppatori di Amazon DynamoDB DynamoDB
- DynamoDB Esempi di espressioni di condizione - Guida per sviluppatori Amazon DynamoDB
- Query: riferimento Amazon DynamoDB API
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.