DynamoDB BatchGetItem con la AWS CLI

aws dynamodb batch-get-item obtiene hasta 100 items por clave primaria en un solo comando (16 MB máximo). Las claves van en --request-items como un mapa de tabla → claves en DynamoDB JSON — y debes comprobar UnprocessedKeys en la salida, porque un lote puede legítimamente devolver solo una parte de lo que pediste.

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"}}
      ]
    }
  }'

La salida mapea cada tabla a los items encontrados, más los que queden pendientes:

{
    "Responses": {
        "Music": [
            {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
        ]
    },
    "UnprocessedKeys": {}
}

Explicación

  • --request-items — un mapa de nombre de tabla → {"Keys": [...]}; un solo comando puede abarcar varias tablas. Cada clave debe ser la clave primaria completa (partición + ordenación para una clave compuesta). Más de 100 claves, o la misma clave dos veces, falla con una ValidationException.
  • Responses — los items vuelven sin ningún orden concreto, y las claves que no existen simplemente no aparecen — empareja los resultados con las solicitudes por sus atributos de clave.
  • UnprocessedKeys — a diferencia de query/scan, la CLI no reintenta automáticamente un lote parcial (no es un token de paginación). Si el mapa no está vacío — limitación (throttling), una respuesta de >16 MB — vuelve a ejecutar el comando con ese mapa exacto como --request-items (ya está en la forma correcta), aplicando un retroceso (backoff) entre intentos.
  • Por tabla puedes añadir "ProjectionExpression": "..." (con "ExpressionAttributeNames") para obtener solo algunos atributos, y "ConsistentRead": true para lecturas con consistencia fuerte — las lecturas por lotes son con consistencia eventual por defecto.
  • Consejo: para más de unas pocas claves, guarda el mapa en un archivo y pásalo con --request-items file://keys.json.

Hazlo visualmente

Escribir a mano DynamoDB JSON anidado entre comillas del shell es propenso a errores. El DynamoDB Expression Builder construye mapas tipados de clave/valor y copia comandos de CLI listos para ejecutar.

Para obtener e inspeccionar items entre tablas en una interfaz gráfica — sin escapar JSON, sin llevar la cuenta de reintentos — descarga DynoTable.

Ejemplos relacionados

References

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

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.