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 a jq falla 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. El cmd y PowerShell de Windows siguen reglas distintas; mete la clave en un fichero y pasa --key file://key.json en vez de pelearte con ellos.
  • --query no es --projection-expression--query es JMESPath, aplicado en tu máquina después de que el Item se haya leído y facturado. --projection-expression es el que ve DynamoDB. Ninguno reduce el coste de lectura (por qué).
  • Los alias #proj0 son obligatorios, no estilísticosYear está 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 TOTAL y la respuesta gana un bloque ConsumedCapacity. 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 less en macOS y Linux (con los flags FRX) o por more en Windows. En un script eso rara vez es lo que quieres: pasa --no-cli-pager, o pon AWS_PAGER a 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

Referencias

Verificado por última vez el 2026-07-28 contra la documentación oficial de AWS enlazada arriba.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.