Este documento explica cómo crear un origen de datos en AppSync utilizando una base de datos Aurora y luego cómo crear esquemas de consulta (Query) y mutación (Mutation) asociados a ese origen de datos. También muestra cómo ejecutar consultas y mutaciones de AppSync directamente desde Lambda utilizando las bibliotecas Axios y GraphQL.
3. *Nombre que recibirá nuestro origen de datos
Se debe seleccionar el tipo de origen de datos, en este caso una base de datos
relacional para Aurora.
4. Colocamos el nombre de la base de datos (Opcional)
Seleccionamos la región donde se encuentra nuestra
base de datos
Colocamos el esquema de la base de datos (Opcional)
Seleccionamos la llave correspondiente a nuestra base de datos
Seleccionamos nuestra base de datos
*Al seleccionar una base de datos y su llaven deberán crear o asignar un rol dependiendo del caso
Procedemos a crear el origen de datos
5. Se debe crear un esquema base donde se especificará si nuestra API tendrá Query y/o Mutation el
nombre que tendrá cada una de ellas.
Se debe crear un tipo esquema donde se especifiquen los datos que se manejan y su tipo.
(Deben coincidir con los de la base de datos)
Crear esquema de AppSync
6. Se crea el tipo esquema Query donde se encontrarán las consultas que se realizarán.
Podemos especificar algún valor para filtrar nuestras búsquedas o traer todos los resultados de la
misma.
Data: Es el tipo de esquema que creamos anteriormente el cual contendrá los datos que se
manejan el cual siempre debe estar presente.
Nosotros asignamos el nombre de cada Query para poder diferenciarlos.
Se debe asociar un solucionador el cual nos dirá la acción que se emplea al ejecutar
ese Query, dentro de este solucionador debemos elegir nuestro origen de datos.
(Sin solucionador no se realizará ninguna
acción al ejecutar una consulta)
Query en AppSync
7. Se realiza un SELECT donde diremos que deseamos traer de
una tabla en especifico
Se especifica cuál será la respuesta al momento de cumplirse la consulta.
Se procede a guardar el solucionador.
8. 1.- Seleccionamos nuestro Query, le pasamos un valor para probarlo y seleccionamos lo que queremos que nos muestre al
finalizar su ejecución.
2.- Nomenclatura que se manejara para realizar la consulta.
(Dentro del paréntesis irán los valores que se usarán para filtrar y en forma de lista en la parte inferior los valores que se
mostraran al terminar la consulta)
3.- Resultados obtenidos por medio de la consulta.
1
2 3
9. Mutation en AppSync
Se crea el esquema de Mutation donde se encontrara el proceso de CRUD que
se realizará.
Data: Es el esquema que creamos anteriormente el cual contendrá los datos
que se manejan el cual siempre debe estar presente.
El input se representa con un esquema que tendrá los valores que serán agregados para
realizar alguna acción en específica, este puede contener todos los valores de que se manejan o
solo un valor en específico según sea el caso.
(También se pueden agregar datos directos como se mostró en el caso de Query)
Nosotros asignamos el nombre de cada Mutation para poder diferenciarlos.
Se debe asociar un solucionar el cual nos dirá la acción que se emplea al
ejecutar esta Mutation.
(Sin solucionador no se realizará ninguna
acción al ejecutar una consulta)
10. El proceso para insertar, modificar
o eliminar algún valor será el
mismo que en una base de datos,
por lo cual se debe buscar una
manera de automatizar el proceso
en dado caso que cambie la base
de datos o solo se ingresen valores
en específico.
Si se desea recibir alguna
respuesta como los resultados
insertados se debe realizar un
SELECT.
el uso del .toLowerCase() dependerá de
cómo esté estructurada la base de datos
11. Se debe agregar el nombre de la tabla de la base de datos
Caso de diferentes bases de datos
**En este caso se aplica cuando se encuentran las mismas tablas en diferentes bases de datos
Se agrega el valor que se recibe en la consulta (nombre
del esquema)
Se concatenan las variables
Se agrega la variable resultante
12. Se agrega SCHEMA como un valor para
realizar alguna consulta y/o mutación
El Schema no es necesario agregarlo en la data, por lo cual simplemente se puede
agregar como valor de consulta
13. Se especifica cuál será la respuesta al momento de cumplirse la consulta.
La posición cambiará de acuerdo a la acción que se esté realizando y si se ejecuta un Query o una
Mutation.
Ejemplos en página 13.
14. 1
2 3
1.- Seleccionamos Mutation y elegimos la que se utilizara, le pasamos valores para probarlo y seleccionamos lo que queremos
que nos muestre al finalizar su ejecución.
2.- Nomenclatura que se manejara para realizar su ejecución.
(En este caso dentro del input encontraremos los valores que se usarán y en forma de lista en la parte inferior los valores que
se mostraran al terminar)
3.- Resultados obtenidos por medio de la consulta.
15. Ejemplos de plantilla de mapeo de respuestas
● En caso de obtener todos los valores de una tabla:
$utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
● En caso de obtener un valor específico o eliminar algún valor de una tabla:
$utils.toJson($utils.rds.toJsonObject($ctx.result)[0][0])
● En caso de agregar o modificar un elemento a la tabla:
$utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
16. Ejecutar AppSync desde lambda
Librerías necesarias en nuestro lambda:
● Axios
● Graphql-tag
● Graphql
Debemos tener nuestra direccion URL y nuestra API KEY para
poder ejecutar desde la función lambda
*El api key tiene un tiempo de duración por defecto de 7 días, este tiempo se
puede alargar en las configuración de AppSync
17. Se hace un llamado a AppSync por medio de un método post
Por medio de axio crearemos un llamado a la URL de nuestro AppSync.
Damos autorización por medio de nuestra Api Key.
Por medio de print y la función action() le pasaremos la nomenclatura en AppSync
al momento de ejecutar nuestra función lambda
Declaramos las librerías que usaremos.
Extraemos el resultado y lo mostramos al terminar exitosamente
su ejecución.
18. Determinamos qué acción quiere realizarse.
Separamos las llaves y sus valores para agregarlas en una lista.
Función de action()
Usamos una función que crearemos llamada inputData() para
automatizar nuestra nomenclatura y le asignaremos las listas key y
value.
Añadimos la nomenclatura de graphql y especificamos cual Query
o Mutation se usará
Retornamos el valor al cual se le asigna la nomenclatura
19. También podemos agregar la lista key en la parte inferior para
automatizar el proceso y se muestran los mismos valores que
se están insertando y/o modificando.
Con la función inputData() podremos crear una lista donde se
encontrará los datos que se insertaran en el orden que requiere la
nomenclatura. Ej:
“name: pepe, lastName: escobar, email: pepe@gmail.com”