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 unaValidationException.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 dequery/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": truepara 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
- DynamoDB BatchGetItem en Node.js — la misma lectura por lotes con AWS SDK v3.
- DynamoDB BatchGetItem en Python — la misma lectura por lotes con boto3.
- DynamoDB GetItem con la AWS CLI — la lectura de un único item que esto agrupa por lotes.
- Operaciones por lotes en DynamoDB — límites, fallo parcial y cuándo compensa el procesamiento por lotes.
- "Too many items requested for the BatchGetItem call" — más de 100 claves en una sola solicitud.
- "Provided list of item keys contains duplicates" — la misma clave dos veces en un lote.
References
- BatchGetItem — Amazon DynamoDB API Reference
- batch-get-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.