Comenzando con AWS AppSync: Un Enfoque Práctico para GraphQL
Este artículo te guía a través de los fundamentos de AWS AppSync, guiándote en el proceso de configuración, desarrollo y despliegue de una API GraphQL.
AWS AppSync
Aprende AWS AppSync para APIs GraphQL con suscripciones en tiempo real, integración de fuentes de datos y capacidades offline.
2 articles
1. Introducción a GraphQL y AWS AppSync
En el panorama en constante evolución del desarrollo de aplicaciones web y móviles, la eficiencia y las capacidades en tiempo real no son solo características deseables, son esenciales. Aquí es donde entran en juego GraphQL y AWS AppSync, ofreciendo a los desarrolladores las herramientas para construir aplicaciones dinámicas y escalables con facilidad.
GraphQL, desarrollado internamente por Facebook en 2012 y lanzado públicamente en 2015, es un lenguaje de consulta para APIs y un runtime para ejecutar consultas usando un sistema de tipos definido para tus datos. A diferencia de las APIs REST tradicionales que requieren cargar desde múltiples URLs, las APIs GraphQL obtienen todos los datos que tu aplicación necesita en una sola solicitud, asegurando eficiencia incluso en conexiones de red móvil lentas.
AWS AppSync es el GraphQL de AWS. Es un servicio gestionado que simplifica el desarrollo de aplicaciones al crear APIs GraphQL y Pub/Sub serverless. Proporciona un único endpoint para consultar, actualizar o publicar datos de forma segura, permitiendo a los desarrolladores construir aplicaciones interactivas y ricas en características.
1.1. Características Clave de GraphQL
Recuperación eficiente de datos: Los clientes pueden solicitar exactamente lo que necesitan, ni más ni menos. Esto elimina los problemas de sobre-obtención y sub-obtención comúnmente encontrados en APIs REST.Único endpoint: Las APIs GraphQL usan un único endpoint para manejar consultas, mutaciones (cambio de datos) y suscripciones (actualizaciones en tiempo real), simplificando el proceso de obtención de datos.Fuertemente tipado: El servicio define un conjunto de tipos que describe completamente el conjunto de datos posibles que puedes consultar, permitiendo introspección para documentación y propósitos de validación.Datos en tiempo real con suscripciones: GraphQL soporta actualizaciones en tiempo real a través de suscripciones, permitiendo actualizaciones en vivo al cliente a medida que los datos cambian.Obtención declarativa de datos: Los clientes describen sus requisitos de datos como lo que necesitan, en lugar de cómo obtenerlo. Esto permite un enfoque más declarativo para la obtención de datos y separación de preocupaciones entre cliente y servidor.
1.2. Operaciones GraphQL
Tenemos 3 operaciones diferentes en GraphQL:
- Query: Usado para recuperar datos, como una solicitud GET.
- Mutation: Usado para modificar datos, como CREATE, UPDATE o DELETE.
- Subscription: Usado para suscribirse a cambios de datos y recibir notificaciones en tiempo real.
1.3. ¿Por Qué Elegir AWS AppSync
AWS AppSync va más allá de ofrecer características estándar de GraphQL al integrarse profundamente con el ecosistema AWS, proporcionando:
Datos en tiempo real: Soporta suscripciones para actualizaciones de datos en tiempo real a clientes de aplicaciones.Soporte offline: Ofrece capacidades integradas para acceso a datos offline y sincronización, mejorando la confiabilidad de la aplicación y la experiencia del usuario.Integración directa con una o más fuentes: Se conecta sin problemas con almacenes de datos NoSQL, bases de datos relacionales, APIs HTTP y más, permitiendo patrones complejos de agregación y acceso a datos.Control de acceso de grano fino: Permite controles de acceso precisos, integrándose con AWS IAM y Amazon Cognito para mecanismos completos de autenticación y autorización.
1.4. Casos de Uso
- Crear una API Pub/Sub simple
- Crear instantáneamente APIs para tus bases de datos
- Combinar múltiples fuentes de datos en una única API GraphQL
- Aplicaciones Colaborativas en Tiempo Real
- Aplicaciones Móviles y Web Basadas en Datos
- Aplicaciones IoT y de Datos en Streaming
1.5. Ejemplo: Arquitectura de referencia BFF de AWS
Enlace original aquí
1.6. Componentes de una API GraphQL
Hay 3 componentes principales en una API GraphQL:
Schemas: Es una puerta de enlace que maneja todas las solicitudes hechas al servidor. Cuando se hace una solicitud, el schema actúa como el único endpoint que interactúa con el cliente. El schema accederá, procesará y retransmitirá datos desde la fuente de datos de vuelta al cliente. Más detalles aquí.Data sources: DynamoDB, Lambda, OpenSearch, endpoints HTTP, EventBridge, bases de datos relacionales o fuente de datos None. Más información aquí.Resolvers: Una unidad de código que maneja cómo se resolverán los datos de ese campo cuando se hace una solicitud al servicio. Más información aquí.
2. Demo: Configurando tu Primera API GraphQL con AWS AppSync
2.1. Creando la API GraphQL más simple
Probaremos el enfoque más simple, conectando una tabla DynamoDB, siguiendo los siguientes pasos:
Usaré la Consola de AWS para mostrarte el paso a paso, pero si prefieres crear el servicio AWS AppSync usando Terraform puedes revisar el código aquí.
Crear una Nueva API: Elige “Create API” y selecciona la opción “Start with a DynamoDB table” para este tutorial.
Especificar detalles de la API: Actualiza toda la información aquí, incluyendo “Import from DynamoDB table”. Usaré mi tabla DynamoDB en el formulario de feedback de mi blog.
Especificar recursos GraphQL: Tenemos que incluir todos los campos opcionales en nuestra tabla DynamoDB.
Crear API: Finalmente, creamos la nueva API GraphQL.
Por defecto, la API GraphQL ha sido creada con todas las operaciones habilitadas: queries, mutations y subscriptions. Podemos personalizarla cambiando el Schema.
En la sección Queries, podemos probar nuestra API. Podemos ejecutar Queries, Mutation o Subscription (todas las operaciones fueron creadas automáticamente). En el siguiente ejemplo, consultaremos todos los datos:
El último paso es conectar nuestro cliente con la API. Aquí encontrarás más información al respecto.
2.2. Actualizando la API para solo consultar datos
Ahora, actualizaremos nuestro Schema para solo permitir consultar datos.
Podemos usar el siguiente schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
type Query {
getFeedback(type: String!, date: String!): feedback
listFeedbacks(filter: TableFeedbackFilterInput, limit: Int, nextToken: String): feedbackConnection
}
type feedback {
date: String!
type: String!
email: String
message: String!
name: String
rating: String
}
input TableFeedbackFilterInput {
date: TableStringFilterInput
type: TableStringFilterInput
email: TableStringFilterInput
message: TableStringFilterInput
name: TableStringFilterInput
rating: TableStringFilterInput
}
input TableStringFilterInput {
ne: String
eq: String
le: String
lt: String
ge: String
gt: String
contains: String
notContains: String
between: [String]
beginsWith: String
attributeExists: Boolean
}
type feedbackConnection {
items: [feedback]
nextToken: String
}
3. Conclusión
AWS AppSync ayuda a los desarrolladores a crear aplicaciones eficientes, escalables e interactivas con facilidad. Para simplificarlo, puedes crear un único endpoint que te permite:
- integrar directamente con la fuente recuperando solo los datos deseados
- recibir actualizaciones en tiempo real





