GetItem de DynamoDB con la AWS CLI
En la CLI la clave es una cadena DynamoDB JSON, con cada valor envuelto en su tipo ({"S": "..."}, {"N": "..."}), lo que significa que la mayor parte de la dificultad de un aws dynamodb get-item está en el escapado de la shell y no en DynamoDB. La clave en sí sigue teniendo que ser la clave principal completa.
Código
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 respuesta imprime el Item en DynamoDB JSON:
{
"Item": {
"Artist": {"S": "Arturo Sandoval"},
"SongTitle": {"S": "Cubano Chant"},
"AlbumTitle": {"S": "Danzon"},
"Year": {"N": "1994"}
}
}Explicación
- Un fallo no imprime absolutamente nada — ni
Item, ni objeto vacío, código de salida 0. Canalizar eso directamente ajqfalla con entrada vacía, así que captura la salida y comprueba la cadena antes de parsearla. - El escapado es el trabajo de verdad — pon el JSON entre comillas simples en bash y zsh para que
$y!queden literales. Elcmdy PowerShell de Windows siguen reglas distintas; mete la clave en un fichero y pasa--key file://key.jsonen vez de pelearte con ellos. --queryno es--projection-expression—--queryes JMESPath, aplicado en tu máquina después de que el Item se haya leído y facturado.--projection-expressiones el que ve DynamoDB. Ninguno reduce el coste de lectura (por qué).- Los alias
#proj0son obligatorios, no estilísticos —Yearestá en la lista de palabras reservadas de AWS, y nombrarla directamente en una proyección se rechaza. - Pregunta cuánto costó — añade
--return-consumed-capacity TOTALy la respuesta gana un bloqueConsumedCapacity. Para este Item, por debajo de 4 KB, eso son 0,5 unidades de capacidad, o 1,0 en cuanto añades--consistent-read(la contrapartida). - La CLI v2 pagina tu salida — por defecto todo pasa por
lessen macOS y Linux (con los flagsFRX) o pormoreen Windows. En un script eso rara vez es lo que quieres: pasa--no-cli-pager, o ponAWS_PAGERa la cadena vacía.
Hazlo visualmente
Teclear a mano ese pegote de --key es donde se va el tiempo. El DynamoDB Expression Builder construye el DynamoDB JSON y los mapas de alias desde un formulario, y luego te devuelve un comando aws dynamodb listo para ejecutar.
DynoTable hace lo mismo contra una tabla real: explora filas en una cuadrícula y luego exporta la consulta que hay detrás como un comando de la CLI. Descarga DynoTable.
Guías relacionadas
- Query vs. Scan — cuándo un solo
get-itemgana a unquery. - Cómo funcionan las claves de partición de DynamoDB — por qué
get-itemnecesita la clave completa. - DynamoDB ResourceNotFoundException — el primer error habitual aquí: nombre de tabla o región equivocados.
- «The provided key element does not match the schema» — la clave que pasas no coincide con el esquema de clave de la tabla.
Referencias
- 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
Verificado por última vez el 2026-07-28 contra la documentación oficial de AWS enlazada arriba.