Este dilema se puede tratar de diversas maneras, sin embargo te damos la que en nuestra opinión es la solución más completa.
Solución:
Amazon DynamoDB proporciona la operación de escaneo para este propósito, que devuelve uno o más artículos y su attributes realizando un escaneo completo de una tabla. Tenga en cuenta las dos limitaciones siguientes:
-
Según el tamaño de su tabla, es posible que deba usar la paginación para recuperar el conjunto de resultados completo:
Nota
Si la cantidad total de elementos escaneados supera el límite de 1 MB, el escaneo se detiene y los resultados se devuelven al usuario con una LastEvaluatedKey para continuar el escaneo en una operación posterior. Los resultados también incluyen el número de elementos que superan el límite. Un escaneo puede dar como resultado que ningún dato de la tabla cumpla con los criterios de filtro.
El conjunto de resultados finalmente es consistente.
-
La operación de escaneo es potencialmente costosa tanto en rendimiento como en unidades de capacidad consumidas (es decir, precio), consulte la sección Rendimiento de escaneo y consulta en Query and Scan en Amazon DynamoDB:
[…] Además, a medida que crece una tabla, la operación de exploración se ralentiza. La operación de escaneo examina cada elemento para los valores solicitados, y puede usar el rendimiento aprovisionado para una tabla grande en una sola operación. Para tiempos de respuesta más rápidos, diseñe sus tablas de manera que puedan usar las API Query, Get o BatchGetItem en su lugar. O bien, diseñe su aplicación para usar operaciones de escaneo de una manera que minimice el impacto en la tasa de solicitud de su tabla. Para obtener más información, consulte Pautas de rendimiento aprovisionado en Amazon DynamoDB. [emphasis mine]
Puede encontrar más detalles sobre esta operación y algunos ejemplos de fragmentos en Escaneo de tablas con el SDK de AWS para la API de bajo nivel de PHP para Amazon DynamoDB, siendo el ejemplo más simple que ilustra la operación:
$dynamodb = new AmazonDynamoDB();
$scan_response = $dynamodb->scan(array(
'TableName' => 'ProductCatalog'
));
foreach ($scan_response->body->Items as $item)
echo "Item Number:"
. (string) $item->Id->AmazonDynamoDB::TYPE_NUMBER;
echo "
Item Name: "
. (string) $item->Title->AmazonDynamoDB::TYPE_STRING ."
";
Hola, puedes descargar usando boto3. en pitón
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Table')
response = table.scan()
items = response['Items']
while 'LastEvaluatedKey' in response:
print(response['LastEvaluatedKey'])
response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
items.extend(response['Items'])
Supuse que estabas usando PHP pero no lo mencionaste (editado). Encontré esta pregunta buscando en Internet y desde que obtuve la solución funcionando, para los que usan nodejs Aquí hay una solución simple usando scan:
var dynamoClient = new AWS.DynamoDB.DocumentClient();
var params =
TableName: config.dynamoClient.tableName, // give it your table name
Select: "ALL_ATTRIBUTES"
;
dynamoClient.scan(params, function(err, data)
if (err)
console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
else
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
);
Asumo mismo código se puede traducir a PHP también utilizando diferentes SDK de AWS
Aquí tienes las comentarios y puntuaciones
Recuerda algo, que tienes autorización de interpretar si descubriste tu incógnita en el momento preciso.