Supplied AttributeValue is empty, must contain exactly one of the supported datatypes
In breve — Uno degli attributi nel tuo Item (o chiave) ha un AttributeValue con nessun valore al suo interno — un set vuoto, una stringa/binario vuoto in un attributo chiave, un campo null/undefined, o un wrapper senza membro S/N/BOOL/… DynamoDB richiede che ogni AttributeValue contenga esattamente un tipo supportato. Rimuovi l'attributo vuoto o dagli un valore reale.
Cosa significa
ValidationException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypesDynamoDB ha rifiutato la richiesta mentre validava la forma di un Item: un AttributeValue era presente ma non portava nulla che DynamoDB possa memorizzare. Ogni AttributeValue deve contenere esattamente un valore tipizzato (S, N, B, SS, NS, BS, M, L, NULL, o BOOL). È un HTTP 400, non ripetibile — lo stesso Item fallisce di nuovo finché non correggi l'attributo.
Questo è distinto da ExpressionAttributeValues contains invalid value: quello riguarda un :placeholder in un'espressione; questo riguarda un attributo nel corpo dell'Item stesso (PutItem, BatchWriteItem, TransactWriteItems).
Perché succede
- Un campo
undefined/nullnell'oggetto che stai scrivendo — il marshaller emette un AttributeValue vuoto invece di saltarlo o tipizzarlo comeNULL. - Un Set vuoto —
SS,NS, oBSdeve avere almeno un membro. Un set vuoto non è valido ovunque. - Una stringa vuota in un attributo chiave — gli attributi stringa non-chiave possono essere
"", ma un attributo chiave di tabella o indice no. - Un valore binario vuoto in una chiave — stessa regola delle stringhe: il binario vuoto va bene per gli attributi non-chiave (e dentro set, liste e mappe), mai per una chiave.
- Un set vuoto nidificato sepolto dentro una
MapoListche stai persistendo — le stringhe e i valori binari vuoti nidificati sono consentiti; i set vuoti nidificati no.
Come risolverlo
- Rimuovi gli attributi vuoti/
undefinedprima di scrivere. Costruisci l'Itemsolo con i campi che hanno effettivamente valori; scarta il resto invece di inviare un wrapper vuoto. - Per il Document Client, abilita la gestione dei valori vuoti. L'opzione di marshalling
removeUndefinedValues: truedi@aws-sdk/lib-dynamodbscarta i campiundefinedcosì non raggiungono mai il wire. (Le stringhe e i valori binari vuoti per gli attributi non-chiave sono consentiti direttamente da DynamoDB.) - Non inviare mai un Set vuoto — ometti del tutto l'attributo quando il set non ha membri, o memorizza un
NULL. - Dai agli attributi chiave valori reali — una partition/sort key (tabella o indice) non può mai essere una stringa vuota o un binario vuoto.
- Percorri le Map/List nidificate in cerca di set vuoti vaganti se l'attributo incriminato non è di primo livello.
FAQ
Cosa significa "Supplied AttributeValue is empty" in DynamoDB? Un attributo nel tuo Item ha un AttributeValue che non contiene alcun valore memorizzato — una stringa o un binario vuoto in un attributo chiave, un Set vuoto, o un campo null/undefined. Ogni AttributeValue deve contenere esattamente un datatype supportato, quindi DynamoDB rifiuta la scrittura.
Come impedisco a DynamoDB di rifiutare i valori vuoti? Rimuovi gli attributi vuoti e undefined prima di scrivere (o usa l'opzione removeUndefinedValues del Document Client). Non inviare mai un Set vuoto — ometti l'attributo o memorizza un NULL. Gli attributi chiave devono sempre portare un valore reale e non vuoto.
Errori correlati
- ExpressionAttributeValues contains invalid value — la stessa classe di problema in un placeholder di espressione.
- ValidationException (overview)
- Impara: DynamoDB data types · JSON marshalling
Riferimenti
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- AttributeValue — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.