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