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 datatypes

DynamoDB 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/null nell'oggetto che stai scrivendo — il marshaller emette un AttributeValue vuoto invece di saltarlo o tipizzarlo come NULL.
  • Un Set vuotoSS, NS, o BS deve 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 Map o List che stai persistendo — le stringhe e i valori binari vuoti nidificati sono consentiti; i set vuoti nidificati no.

Come risolverlo

  1. Rimuovi gli attributi vuoti/undefined prima di scrivere. Costruisci l'Item solo con i campi che hanno effettivamente valori; scarta il resto invece di inviare un wrapper vuoto.
  2. Per il Document Client, abilita la gestione dei valori vuoti. L'opzione di marshalling removeUndefinedValues: true di @aws-sdk/lib-dynamodb scarta i campi undefined così non raggiungono mai il wire. (Le stringhe e i valori binari vuoti per gli attributi non-chiave sono consentiti direttamente da DynamoDB.)
  3. Non inviare mai un Set vuoto — ometti del tutto l'attributo quando il set non ha membri, o memorizza un NULL.
  4. Dai agli attributi chiave valori reali — una partition/sort key (tabella o indice) non può mai essere una stringa vuota o un binario vuoto.
  5. 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

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.