Concevoir des API sur AWS

Développer des applications sur AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

Que sont les API

 

  • Amazon API Gateway : service géré pour créer des API.
  • Concevoir, déployer, gérer et sécuriser vos API.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités des API

  • Mettre en œuvre différents types d'API.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités des API

  • Mettre en œuvre différents types d'API.
  • Intégrer des services dorsaux.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités d'API Gateway

  • Mettre en œuvre différents types d'API.
  • Intégrer des services dorsaux.
  • Sécuriser l'accès aux API.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités d'API Gateway

  • Mettre en œuvre différents types d'API.
  • Intégrer des services dorsaux.
  • Sécuriser l'accès aux API.
  • Limiter le débit pour protéger les dorsales.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités d'API Gateway

  • Mettre en œuvre différents types d'API.
  • Intégrer des services dorsaux.
  • Sécuriser l'accès aux API.
  • Limiter le débit pour protéger les dorsales.
  • Transformer les charges utiles des requêtes et des réponses.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités d'API Gateway

  • Mettre en œuvre différents types d'API.
  • Intégrer des services dorsaux.
  • Sécuriser l'accès aux API.
  • Limiter le débit pour protéger les dorsales.
  • Transformer les charges utiles des requêtes et des réponses.
  • Publier des API pour les consommateurs.
Développer des applications sur AWS

Capacités d'Amazon API Gateway

 

Capacités d'API Gateway

  • Mettre en œuvre différents types d'API.
  • Intégrer des services dorsaux.
  • Sécuriser l'accès aux API.
  • Limiter le débit pour protéger les dorsales.
  • Transformer les charges utiles des requêtes et des réponses.
  • Publier des API pour les consommateurs.
  • Gérer le cycle de vie : versions, déploiement, alias.
Développer des applications sur AWS

Types d'API

  • API Gateway prend en charge trois types d'API :
    • API REST
    • API HTTP
    • API WebSocket

 

Types d'API

Développer des applications sur AWS

Points de terminaison d'API Gateway

  • Les points de terminaison contrôlent l'accès des clients à votre API.
  • Optimisé périphérie : CloudFront géré par AWS pour une faible latence mondiale.
  • Régional : déployé dans une région AWS précise.
  • Privé : accessible uniquement via AWS PrivateLink.
  • Les points de terminaison privés restent hors d'internet public.

 

Points de terminaison

Développer des applications sur AWS

API REST

  • Offre API Gateway la plus complète en fonctionnalités.
  • Modèle synchrone requête/réponse.

 

API REST

Développer des applications sur AWS

Cas d'usage des API REST

 

Cas d'usage API REST

  • API d'entreprise nécessitant une gestion complète du cycle de vie.
  • API exigeant des contrôles de sécurité avancés.
  • Écosystèmes de développeurs tiers avec clés d'API et plans d'utilisation.
  • Intégrations directes aux services AWS sans Lambda.
Développer des applications sur AWS

Prise en charge des API REST d'API Gateway

 

Prise en charge des API REST

  • Validation des requêtes.
  • Clés d'API.
  • Plans d'utilisation et limitation de débit.
  • Mise en cache des réponses avec TTL configurable.
  • Transformation requête/réponse via gabarits VTL.
  • Authentification IAM (Signature V4).
  • Autorisateurs Lambda, bassins d'utilisateurs Cognito.
Développer des applications sur AWS

Prise en charge des API REST d'API Gateway

 

 

Prise en charge des API REST

  • Trois types de points de terminaison pris en charge :
    • Optimisé périphérie
    • Régional
    • Privé
  • Protection contre les exploits Web avec AWS WAF.
  • Déploiements canaris.
  • Observabilité via AWS X-Ray et journaux CloudWatch.
Développer des applications sur AWS

Compromis des API REST

  • Plus coûteuses que les API HTTP.
  • Légèrement plus de latence.

 

Compromis REST

Développer des applications sur AWS

API HTTP

  • Optimisées pour la performance et le coût plutôt que l'étendue des fonctions :
    • Performance
    • Coût

 

API HTTP

Développer des applications sur AWS

Cas d'usage des API HTTP

  • Charges sans serveur et API soutenues par Lambda.
  • Microservices et API mandataires légères.
  • Applications sensibles à la latence.
  • API utilisant l'authentification OAuth 2.0 / OIDC.

 

Cas d'usage API HTTP

Développer des applications sur AWS

Prise en charge des API HTTP d'API Gateway

 

Fonctionnalités des API HTTP

  • Intégrations mandataires Lambda et autorisateurs.
  • Autorisation JWT/OIDC native (Cognito, Auth0, Okta).
  • Configuration CORS intégrée au niveau API.
  • Intégrations VPC privées via VPC Link.
  • Mappage de paramètres de base pour en-têtes, chaînes de requête et chemins.
Développer des applications sur AWS

Compromis des API HTTP

 

Limites des API HTTP

  • Les API HTTP NE prennent PAS en charge :

    • Clés d'API
    • Plans d'utilisation
    • Validation des requêtes
    • Mise en cache des réponses
    • Traçage avec AWS X-Ray
    • Transformation de charge utile VTL

    • Prise en charge uniquement :

      • Points de terminaison périphérie ou privés (régional seulement)
Développer des applications sur AWS

API WebSocket

 

API WebSocket

  • Communication bidirectionnelle entre clients et serveurs.
  • Connexion maintenue ouverte, contrairement aux API REST et HTTP.
  • Les serveurs peuvent pousser des données aux clients connectés.
Développer des applications sur AWS

Cas d'usage des API WebSocket

  • Applications de clavardage.
  • Avis en temps réel.
  • Tableaux de bord en temps réel.

 

cas d'usage

Développer des applications sur AWS

Prise en charge des API WebSocket d'API Gateway

  • Transformations des charges utiles.
  • Validation des requêtes.
  • Routes intégrées spéciales :
    • $connect : le client établit une connexion
    • $disconnect : le client se déconnecte
    • $default : aucune route correspondante

 

Fonctionnalités des API WebSocket

Développer des applications sur AWS

Mise en cache d'API

  • Mettre en cache les réponses réduit la charge sur la dorsale.
  • Améliore la performance des API.
  • Cas typiques :
    • Données souvent demandées
    • API majoritairement en lecture
    • Réduction des invocations Lambda

 

Mise en cache d'API

Développer des applications sur AWS

Mise en cache d'API

 

Réponse mise en cache d'API

  • Les réponses mises en cache expirent après un TTL configurable.
  • Gérer les données désuètes en :
    • réglant l'expiration du cache
    • vidant le cache
Développer des applications sur AWS

Meilleures pratiques de conception d'API : nommer clairement les ressources

 

Conception d'API - noms

  • Les chemins doivent représenter des ressources, pas des actions.
  • Utilisez des noms, pas des verbes.
  • Bon :
    • GET /orders/123
  • À éviter :
    • GET /getOrder/123
Développer des applications sur AWS

Meilleures pratiques de conception d'API : versionner les API

 

Versionnage des API

  • Versionner les API pour les faire évoluer en toute sécurité.
  • Éviter de briser les clients existants.
  • Approches courantes :
    • Version dans l'URI : GET /v1/orders
    • Paramètre de requête : GET /orders?version=1
    • En-tête HTTP : Accept-Version: v1
Développer des applications sur AWS

Portails pour développeurs d'API

  • Publier et partager des API REST via un portail Web.
  • Fournir de la documentation aux consommateurs d'API.
  • Principales fonctions :
    • Documentation d'API (fichiers Swagger)
    • Intégration des consommateurs
    • Téléchargements de SDK
    • Inscription de clés d'API et parcours d'abonnement

 

portail api gateway

Développer des applications sur AWS

Spécifications OpenAPI

  • OpenAPI (Swagger) : norme pour décrire les API REST.
  • API Gateway peut importer et exporter des spécifications OpenAPI.

 

Prise en charge de Swagger dans API Gateway

Développer des applications sur AWS

Passons à la pratique !

Développer des applications sur AWS

Preparing Video For Download...