DynamoDB BatchGetItem con la AWS CLI
aws dynamodb batch-get-item recupera fino a 100 Item per chiave primaria in un solo comando (max 16 MB). Le chiavi vanno in --request-items come mappa tabella → chiavi in DynamoDB JSON — e devi controllare UnprocessedKeys nell'output, perché un batch può legittimamente restituire solo una parte di ciò che hai richiesto.
Code
aws dynamodb batch-get-item \
--request-items '{
"Music": {
"Keys": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
{"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}
]
}
}'L'output mappa ogni tabella agli Item trovati, più eventuali resti:
{
"Responses": {
"Music": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
]
},
"UnprocessedKeys": {}
}Spiegazione
--request-items— una mappa nome tabella →{"Keys": [...]}; un singolo comando può interessare più tabelle. Ogni chiave deve essere la chiave primaria completa (partizione + ordinamento per una chiave composita). Più di 100 chiavi, o la stessa chiave due volte, fallisce con unaValidationException.Responses— gli Item tornano in nessun ordine particolare, e le chiavi che non esistono semplicemente non compaiono — abbina i risultati alle richieste tramite i loro attributi chiave.UnprocessedKeys— a differenza diquery/scan, la CLI non riprova automaticamente un batch parziale (non è un token di paginazione). Se la mappa non è vuota — throttling, una risposta >16 MB — riesegui il comando con quella stessa mappa come--request-items(è già nel formato giusto), applicando un backoff tra i tentativi.- Per ogni tabella puoi aggiungere
"ProjectionExpression": "..."(con"ExpressionAttributeNames") per recuperare solo alcuni attributi, e"ConsistentRead": trueper letture a coerenza forte — le letture batch sono a coerenza eventuale per impostazione predefinita. - Suggerimento: per più di qualche chiave, tieni la mappa in un file e passa
--request-items file://keys.json.
Fallo visivamente
Scrivere a mano DynamoDB JSON annidato tra le virgolette della shell è soggetto a errori. Il DynamoDB Expression Builder costruisce mappe tipizzate chiave/valore e copia comandi CLI pronti da eseguire.
Per recuperare e ispezionare gli Item tra le tabelle in una GUI — senza escape di JSON, senza contabilità di riesecuzioni — scarica DynoTable.
Esempi correlati
- DynamoDB BatchGetItem in Node.js — la stessa lettura batch con AWS SDK v3.
- DynamoDB BatchGetItem in Python — la stessa lettura batch con boto3.
- DynamoDB GetItem con la AWS CLI — la lettura di un singolo Item che questo raggruppa in batch.
- Operazioni batch in DynamoDB — limiti, fallimenti parziali e quando conviene il batching.
- "Too many items requested for the BatchGetItem call" — più di 100 chiavi in una sola richiesta.
- "Provided list of item keys contains duplicates" — la stessa chiave due volte in un batch.
References
- BatchGetItem — Amazon DynamoDB API Reference
- batch-get-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.