TransactGetItems - AWS AppSync

TransactGetItems

El documento de mapeo de solicitudes de TransactGetItems permite indicar al solucionador de DynamoDB de AWS AppSync que realice una solicitud TransactGetItems a DynamoDB para recuperar varios elementos, que pueden estar en varias tablas. Para esta plantilla de solicitud, debe especificar lo siguiente:

  • El nombre de la tabla de cada elemento de solicitud de la que se va a recuperar el elemento

  • La clave de cada elemento de solicitud que se va a recuperar de cada tabla

Se aplican los límites de TransactGetItems de DynamoDB y no puede proporcionar ninguna expresión de condición.

El documento de mapeo de TransactGetItems tiene la siguiente estructura:

{ "version": "2018-05-29", "operation": "TransactGetItems", "transactItems": [ ## First request item { "table": "table1", "key": { "foo": ... typed value, "bar": ... typed value }, "projection" : { ... } }, ## Second request item { "table": "table2", "key": { "foo": ... typed value, "bar": ... typed value }, "projection" : { ... } } ] }

Los campos se definen de la siguiente manera:

Campos TransactGetItems

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 TransactGetItems, este valor se debe establecer en TransactGetItems. Este valor es obligatorio.

transactItems

Los elementos de solicitud que se van a incluir. El valor es una matriz de elementos de solicitud. Se debe proporcionar al menos un elemento de solicitud. Este valor transactItems es obligatorio.

table

La tabla de DynamoDB de la que se va a recuperar el elemento. El valor es una cadena con el nombre de la tabla. Este valor table es obligatorio.

key

La clave de DynamoDB que representa la clave principal del elemento que se desea recuperar. 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).

projection

Proyección que se utiliza para especificar los atributos que se devolverán de la operación de DynamoDB. Para obtener más información acerca de las proyecciones, consulte la sección Proyecciones. Este campo es opcional.

Cosas que tener en cuenta:

  • Si una transacción se realiza correctamente, el orden de los elementos recuperados en el bloque items será el mismo que el orden de los elementos de solicitud.

  • Las transacciones se realizan en régimen de todo o nada. Si algún elemento de solicitud causa un error, no se realizará la transacción completa y se devolverán los detalles del error.

  • El hecho de no poder recuperar un elemento de solicitud no es un error. En su lugar, aparece un elemento null en el bloque items (elementos) en la posición correspondiente.

  • Si el error de una transacción es TransactionCanceledException, se rellenará el bloque cancellationReasons. El orden de los motivos de cancelación en el bloque cancellationReasons será el mismo que el orden de los elementos de solicitud.

  • TransactGetItems está limitado a 100 elementos de solicitud.

Para la siguiente plantilla de mapeo de solicitud de ejemplo:

{ "version": "2018-05-29", "operation": "TransactGetItems", "transactItems": [ ## First request item { "table": "posts", "key": { "post_id": { "S": "p1" } } }, ## Second request item { "table": "authors", "key": { "author_id": { "S": a1 } } } ] }

Si la transacción se realiza correctamente y solo se recupera el primer elemento solicitado, el resultado de la invocación disponible en $ctx.result es el siguiente:

{ "items": [ { // Attributes of the first requested item "post_id": "p1", "post_title": "title", "post_description": "description" }, // Could not retrieve the second requested item null, ], "cancellationReasons": null }

Si la transacción no se realiza correctamente debido a la excepción TransactionCanceledException causada por el primer elemento de solicitud, el resultado de la invocación disponible en $ctx.result es el siguiente:

{ "items": null, "cancellationReasons": [ { "type":"Sample error type", "message":"Sample error message" }, { "type":"None", "message":"None" } ] }

El $ctx.error contiene detalles acerca del error. Los valores de items de claves y cancellationReasons estarán presentes sin duda en $ctx.result.

Para obtener un ejemplo más completo, siga el tutorial de transacciones de DynamoDB con AppSync aquí Tutorial: Solucionadores de transacciones de DynamoDB.