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 BatchDeleteItem
solicitudes le permite indicar al solucionador de AWS AppSync DynamoDB que BatchWriteItem
solicite a DynamoDB que elimine varios elementos, posiblemente de varias tablas. Para esta plantilla de solicitud, debe especificar lo siguiente:
-
Los nombres de tabla de los que eliminar los elementos
-
Las claves de los elementos que eliminar de 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 BatchDeleteItem
tiene la siguiente estructura:
{
"version" : "2018-05-29",
"operation" : "BatchDeleteItem",
"tables" : {
"table1": [
## Item to delete Key
{
"foo" : ... typed value,
"bar" : ... typed value
},
## Item2 to delete Key
{
"foo" : ... typed value,
"bar" : ... typed value
}],
"table2": [
## Item3 to delete Key
{
"foo" : ... typed value,
"bar" : ... typed value
},
## Item4 to delete Key
{
"foo" : ... typed value,
"bar" : ... typed value
}],
}
}
Los campos se definen de la siguiente manera:
BatchDeleteItem 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
BatchDeleteItem
, este valor se debe establecer enBatchDeleteItem
. Este valor es obligatorio. -
tables
-
Las tablas de DynamoDB de las que eliminar los elementos. Cada tabla es una lista de claves de DynamoDB que representan la clave principal de los elementos que se van a eliminar. Los elementos de DynamoDB pueden tener solo una clave hash o una clave hash y una clave de clasificación, dependiendo de la estructura de la tabla. Para obtener más información sobre cómo especificar un “valor con tipo”, consulte Sistema de tipos (mapeo de solicitud). Al menos debe proporcionarse una tabla. El valor
tables
es obligatorio.
Cosas que tener en cuenta:
-
Al contrario que en la operación
DeleteItem
, el elemento completamente eliminado no se devuelve en la respuesta. Solo se devuelve la clave pasada. -
Si un elemento no se ha eliminado de la tabla, aparece un elemento nulo en el bloque de datos para esa tabla.
-
Los resultados de invocación se ordenan por tabla, según el orden en el que se hayan proporcionado dentro de la plantilla de mapeo de solicitud.
-
Cada comando
Delete
dentro de unBatchDeleteItem
es atómico. Sin embargo, un lote puede procesarse 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. -
BatchDeleteItem
está limitado a 25 claves. -
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": "BatchDeleteItem",
"tables": {
"authors": [
{
"author_id": {
"S": "a1"
}
},
],
"posts": [
{
"author_id": {
"S": "a1"
},
"post_id": {
"S": "p2"
}
}
],
}
}
El resultado de invocación disponible en $ctx.result
es el siguiente:
{
"data": {
"authors": [null],
"posts": [
# Was deleted
{
"author_id": "a1",
"post_id": "p2"
}
]
},
"unprocessedKeys": {
"authors": [
# This key was not processed due to an error
{
"author_id": "a1"
}
],
"posts": []
}
}
El $ctx.error
contiene detalles acerca del error. Está garantizado que los datos de claves, unprocessedKeys 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 eliminado están presentes 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 unprocessedKeys.
Para ver un ejemplo más completo, siga el tutorial de DynamoDB Batch que se encuentra aquí AppSync Tutorial: Resolvers por lotes de DynamoDB.