GetItem DynamoDB con la AWS CLI
Sulla CLI la chiave è una stringa DynamoDB JSON, con ogni valore avvolto nel suo tipo ({"S": "..."}, {"N": "..."}), il che significa che la maggior parte della difficoltà di un aws dynamodb get-item sta nel quoting della shell piuttosto che in DynamoDB. La chiave in sé deve comunque essere la chiave primaria completa.
Codice
aws dynamodb get-item \
--table-name 'Music' \
--key '{"Artist":{"S":"Arturo Sandoval"},"SongTitle":{"S":"Cubano Chant"}}' \
--projection-expression '#proj0, #proj1, #proj2, #proj3' \
--expression-attribute-names '{"#proj0":"Artist","#proj1":"SongTitle","#proj2":"AlbumTitle","#proj3":"Year"}'La risposta stampa l'Item in DynamoDB JSON:
{
"Item": {
"Artist": {"S": "Arturo Sandoval"},
"SongTitle": {"S": "Cubano Chant"},
"AlbumTitle": {"S": "Danzon"},
"Year": {"N": "1994"}
}
}Spiegazione
- Un mancato riscontro non stampa proprio nulla — nessun
Item, nessun oggetto vuoto, codice di uscita 0. Convogliarlo direttamente injqfallisce su input vuoto, quindi cattura l'output e verifica la stringa prima di parsarla. - Il quoting è il vero lavoro — metti il JSON tra apici singoli su bash e zsh così
$e!restano letterali. Ilcmddi Windows e PowerShell seguono regole diverse; metti la chiave in un file e passa--key file://key.jsoninvece di combatterci. --querynon è--projection-expression—--queryè JMESPath, applicato sulla tua macchina dopo che l'Item è stato letto e fatturato.--projection-expressionè quello che vede DynamoDB. Nessuno dei due riduce il costo di lettura (perché).- Gli alias
#proj0sono obbligatori, non stilistici —Yearè nella lista delle parole riservate di AWS, e nominarla direttamente in una proiezione viene rifiutato. - Chiedi quanto è costato — aggiungi
--return-consumed-capacity TOTALe la risposta guadagna un bloccoConsumedCapacity. Per questo Item, sotto i 4 KB, sono 0,5 unità di capacità, oppure 1,0 una volta aggiunto--consistent-read(il compromesso). - La CLI v2 pagina il tuo output — di default tutto passa per
lesssu macOS e Linux (con i flagFRX) omoresu Windows. In uno script è raramente quello che vuoi: passa--no-cli-pager, oppure impostaAWS_PAGERa stringa vuota.
Fallo visivamente
Digitare a mano quel blocco --key è dove se ne va il tempo. Il DynamoDB Expression Builder costruisce il DynamoDB JSON e le mappe di alias da un modulo, poi ti restituisce un comando aws dynamodb pronto da eseguire.
DynoTable fa la stessa cosa su una tabella reale: sfoglia le righe in una griglia, poi esporta la query che c'è dietro come comando CLI. Scarica DynoTable.
Guide correlate
- Query vs. Scan — quando un singolo
get-itembatte unaquery. - Come funzionano le partition key di DynamoDB — perché
get-itemha bisogno della chiave completa. - DynamoDB ResourceNotFoundException — il primo errore tipico qui: nome della tabella o regione sbagliati.
- "The provided key element does not match the schema" — la chiave che passi non corrisponde allo schema di chiave della tabella.
Riferimenti
- GetItem — Amazon DynamoDB API Reference
- get-item — AWS CLI Command Reference
- Read consistency — Amazon DynamoDB Developer Guide
- Using the pagination options in the AWS CLI (client-side pager) — AWS CLI User Guide
Ultima verifica 2026-07-28 rispetto alla documentazione ufficiale AWS collegata sopra.