← Volver al catálogo

AWS AppSync

En una frase: Sirve APIs GraphQL gestionadas con suscripciones en tiempo real y datos offline
Certificaciones: SAP-C02 DVA-C02
Documentación oficial: Documentación de AWS AppSync ↗

Qué es

AWS AppSync crea y aloja dos tipos de API (Application Programming Interface: interfaz para que los programas se comuniquen) sin servidores:

  • API GraphQL: GraphQL es un lenguaje de consulta en el que el cliente pide exactamente los campos que necesita en una sola petición, aunque vengan de varias fuentes (DynamoDB, Lambda, Aurora, OpenSearch, una API HTTP (HyperText Transfer Protocol: protocolo de la web)…). Evita las múltiples llamadas y los datos de más típicos de una API REST (Representational State Transfer: estilo de API sobre HTTP).
  • API de eventos (AppSync Events): canales de publicación/suscripción en tiempo real sobre WebSocket, sin necesidad de GraphQL, para enviar actualizaciones a millones de clientes conectados.

Es muy usado en aplicaciones web y móviles, a menudo junto a Amplify y Cognito.

Conceptos clave

  • Esquema GraphQL: define tipos y operaciones: queries (leer), mutations (escribir) y subscriptions (recibir cambios en tiempo real).
  • Resolvers: conectan cada campo con su fuente de datos. Se escriben en JavaScript (entorno APPSYNC_JS) o en plantillas VTL (Velocity Template Language: lenguaje de plantillas) antiguas; los pipeline resolvers encadenan varias funciones.
  • Fuentes de datos: DynamoDB, Lambda, Aurora (a través de la Data API), OpenSearch, EventBridge, endpoints HTTP y Bedrock.
  • Suscripciones en tiempo real: los clientes mantienen una conexión WebSocket y reciben los cambios que provoca una mutación.
  • AppSync Events: canales agrupados en namespaces, con manejadores OnPublish y OnSubscribe para filtrar o transformar, y suscripción con comodines.
  • Autorización: clave de API, IAM (Identity and Access Management), grupos de usuarios de Cognito, OIDC (OpenID Connect) o un autorizador Lambda, combinables en la misma API.
  • Caché del servidor para respuestas de consultas frecuentes y API fusionadas (merged APIs) para unir las API de varios equipos.

Casos de uso típicos

  • Backend de apps web y móviles que necesitan datos de varias fuentes en una sola llamada.
  • Funciones en tiempo real: chats, tableros colaborativos, marcadores deportivos, pujas.
  • Aplicaciones con modo sin conexión que sincronizan al volver a tener red (con Amplify).
  • Enviar a los clientes conectados eventos que ocurren en el backend (desde EventBridge o Lambda) con AppSync Events.

Cuándo NO usarlo

AppSync frente a API Gateway

NecesidadAppSyncAPI Gateway
Estilo de APIGraphQL y eventos pub/subREST, HTTP y WebSocket
Varias fuentes en una sola peticiónSí, por diseñoSolo con lógica propia (por ejemplo, Lambda)
Tiempo real para clientesSuscripciones y Events gestionadosWebSocket, con la gestión de conexiones a tu cargo
Planes de uso y claves por clienteLimitadoSí

Modelo de precios

En las API GraphQL se paga por millón de operaciones de consulta y mutación, y por los minutos de conexión y los mensajes de las suscripciones en tiempo real. En AppSync Events, por operaciones de API, minutos de conexión y mensajes. La caché se cobra por hora según su tamaño. Hay nivel gratuito durante los primeros meses.

Seguridad y alta disponibilidad

Trampas de examen

  • "GraphQL": AppSync.
  • "Datos en tiempo real a clientes web o móviles": suscripciones de AppSync o AppSync Events.
  • "Una sola llamada que combine datos de DynamoDB y de una API": resolvers de AppSync.
  • "Sincronizar datos con modo sin conexión": AppSync con Amplify.
  • "Planes de uso y límites por cliente de una API REST": API Gateway, no AppSync.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes