Clément Schanen

Intégration d'applicationsService régional

AppSync

Permet d’exposer une API GraphQL managée qui interroge plusieurs sources de données depuis un seul point d’entrée

Présentation

  • API GraphQL managée, sans serveur à administrer
  • Un point d’entrée unique interroge plusieurs sources : DynamoDB, Lambda, une base relationnelle, un service HTTP
  • Le client décrit les données qu’il veut et il reçoit uniquement ces données

REST ou GraphQL

API Gateway (REST) AppSync (GraphQL)
Point d’entrée un par ressource un seul
Réponse fixée par le serveur décrite par le client
Agrégation plusieurs appels un seul appel
Temps réel à construire intégré

Concepts clés

Schéma

  • Décrit les types et les opérations possibles
  • Fait office de contrat entre le client et l’API

Résolveur

  • Relie un champ du schéma à une source de données
  • S’écrit en JavaScript, ou en VTL (Velocity Template Language) pour les API anciennes

Sources de données

  • DynamoDB, Lambda, bases relationnelles, OpenSearch
  • Points d’accès HTTP et EventBridge
  • Source None : une réponse fabriquée sans appel externe

API fusionnées

  • Une API fusionnée réunit plusieurs API sources derrière un seul point d’entrée
  • Chaque API garde son schéma, ses résolveurs et ses sources, et publie de son côté
  • Le client ne voit qu’un schéma
  • Les collisions de types entre sources doivent être arbitrées lors de la fusion

C’est ce qui permet à plusieurs équipes de contribuer au même domaine sans conflit.

Types d’opérations

  • Query : lire
  • Mutation : écrire
  • Subscription : recevoir des modifications en temps réel, par WebSocket

AppSync Events

Depuis mars 2025, AppSync expose aussi une API **Pub/Sub sur WebSocket, sans schéma GraphQL. **C’est un usage distinct, qu’il ne faut pas confondre avec les subscriptions.

  • On publie sur un canal, les clients abonnés à ce canal reçoivent les messages
  • Il n’y a pas de schéma, ni de résolveur
  • Cela a été pensé pour diffuser à des milliers de clients, pour un tableau de bord partagé, un système de notifications, des curseurs d’un document collaboratif…

La différence est ce qui déclenche l’envoi : une subscription GraphQL réagit à une mutation sur les données, un événement est publié explicitement.

Authentification

  • Clé d’API pour le prototypage
  • IAM pour les appels de service à service
  • Cognito User Pools ou OIDC (Open ID Connect) pour les utilisateurs
  • Lambda authorizer pour une logique sur mesure
  • Plusieurs modes peuvent coexister sur une même API, champ par champ

Tarification

  • À la requête, query et mutation
  • Au message temps réel délivré, et à la minute de connexion
  • Le cache, optionnel, se facture à l’heure d’exécution d’une instance

Limites à connaître

  • Une requête mal écrite peut coûter cher en lectures, le client décidant de sa forme
  • Le suivi est moins lisible qu’en REST car tout passe par un seul point d’entrée