Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
El documento de mapeo de BatchPutItem
solicitudes le permite indicar al solucionador de AWS AppSync DynamoDB que BatchWriteItem
solicite a DynamoDB que coloque varios elementos, posiblemente en varias tablas. Para esta plantilla de solicitud, debe especificar lo siguiente:
-
Los nombres de tabla en los que poner los elementos
-
Los elementos completos que poner en cada tabla
Se aplican los límites de BatchWriteItem
de DynamoDB y no puede proporcionar ninguna expresión de condición.
El documento de mapeo de BatchPutItem
tiene la siguiente estructura:
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"table1": [
## Item to put
{
"foo" : ... typed value,
"bar" : ... typed value
},
## Item2 to put
{
"foo" : ... typed value,
"bar" : ... typed value
}],
"table2": [
## Item3 to put
{
"foo" : ... typed value,
"bar" : ... typed value
},
## Item4 to put
{
"foo" : ... typed value,
"bar" : ... typed value
}],
}
}
Los campos se definen de la siguiente manera:
BatchPutItem campos
-
version
-
La versión de la definición de plantilla. Solo se admite
2018-05-29
. Este valor es obligatorio. -
operation
-
La operación de DynamoDB que se ha de realizar. Para ejecutar la operación de DynamoDB
BatchPutItem
, este valor se debe establecer enBatchPutItem
. Este valor es obligatorio. -
tables
-
Las tablas de DynamoDB en las que poner los elementos. Cada entrada de la tabla representa una lista de elementos de DynamoDB que insertar para esta tabla específica. Al menos debe proporcionarse una tabla. Este valor es obligatorio.
Cosas que tener en cuenta:
-
Los elementos totalmente insertados se devuelven en la respuesta, si la operación se realiza correctamente.
-
Si un elemento no se ha insertado en la tabla, aparece un elemento nulo en el bloque de datos para esa tabla.
-
Los elementos insertados se ordenan por tabla, según el orden en el que se hayan proporcionado dentro de la plantilla de mapeo de solicitudes.
-
Cada comando
Put
dentro de unBatchPutItem
es atómico; sin embargo, un lote se puede procesar parcialmente. Si un lote se procesa parcialmente debido a un error, la claves sin procesar se devuelven como parte del resultado de invocación dentro del bloque unprocessedKeys. -
BatchPutItem
está limitado a 25 elementos. -
Esta operación no se admite cuando se utiliza con la detección de conflictos. El uso de ambas al mismo tiempo generará un error.
Para la siguiente plantilla de mapeo de solicitud de ejemplo:
{
"version": "2018-05-29",
"operation": "BatchPutItem",
"tables": {
"authors": [
{
"author_id": {
"S": "a1"
},
"author_name": {
"S": "a1_name"
}
},
],
"posts": [
{
"author_id": {
"S": "a1"
},
"post_id": {
"S": "p2"
},
"post_title": {
"S": "title"
}
}
],
}
}
El resultado de invocación disponible en $ctx.result
es el siguiente:
{
"data": {
"authors": [
null
],
"posts": [
# Was inserted
{
"author_id": "a1",
"post_id": "p2",
"post_title": "title"
}
]
},
"unprocessedItems": {
"authors": [
# This item was not processed due to an error
{
"author_id": "a1",
"author_name": "a1_name"
}
],
"posts": []
}
}
El $ctx.error
contiene detalles acerca del error. Está garantizado que los datos de claves, unprocessedItems y cada clave de tabla que se le proporcionó en la plantilla de mapeo de solicitud estarán presentes en el resultado de invocación. Los elementos que se han insertado están en el bloque de datos. Los elementos que no se hayan procesado se marcan como null dentro del bloque de datos y se colocan dentro del bloque unprocessedItems.
Para ver un ejemplo más completo, siga el tutorial de DynamoDB Batch que se encuentra aquí AppSync Tutorial: Resolvers por lotes de DynamoDB.