API Gateway – Retours d'expérience

API Gateway d’Amazon Web Service (AWS) est un service qu’on pourrait comparer à une sorte de **super proxy pour vos APIs.**
Pierre LISERONMis à jour le 20 Août 2018
amazon-gateway-api.jpg

APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. Gateway dAmazon Web Service (AWSLe Cloud AWS (Amazon WebServices) est une plateforme de services cloud développée par le géant américain Amazon.) est un service quon pourrait comparer à une sorte de super proxy pour vos APIs.

A quoi sert API Gateway ?

Lobjectif dAPI Gateway est de pouvoir proposer une API sur le WEB. Les fonctionnalités offertes par le service sont particulièrement intéressantes : 

  • Possibilité de pouvoir exposer plusieurs versions de lAPI en même temps
  • Possibilité dexporter la documentation de lAPI en swagger
  • Possibilité dimporter son API au format SWAGGER
  • Sécurisation des endpoints avec, soit une clé dAPI, soit un Amazon Cognito
  • Possibilité de définir des limites dappels par client (politique dusage de son API) (Plan dutilisation)
  • La possibilité davoir des certificats clients

Fonctionnement général dAPI Gateway

Pour commencer, il faut créer son API ! Pour cela, deux solutions :
votre API possède un Swagger et vous pouvez limporter directement
vous êtes obligé de créer chaque méthode à la main ( ce qui, entre nous, nest pas très pratique)

Une fois que votre API est définie, il faut spécifier où sont les endpoints de votre API. Par exemple, pour votre appel GET /pets, il est nécessaire de définir où trouver la ressource.
Pour spécifier les localisations des endpoints, il faut aller dans linterface et choisir lURLUniform Ressource Locator ou le service AWS à appeler correspondant à cette méthode. De même,  pour chacun des appels, vous pouvez configurer les headers et les paramètres dentrée de la méthode. Cette fonction est très pratique si vous avez plusieurs versions de lAPI qui nont pas les mêmes paramètres dentrée.

Une fois lAPI documentée, il faut réaliser « un déploiement », ce qui correspond généralement à une version de lAPI ou à un Environnement (dev, rec, prod). Cette notion sappelle lETAPE.

Une fois sur lETAPE, lAPI est prête à être directement appelée. LURL daccès se situe en haut de la page. A ce moment, il est possible dappliquer des restrictions dappels et dutiliser le certificat client.

Quest-ce que le certificat client ?

Le certificat client est un certificat SSL qui permet de valider, côté API, que vos appels proviennent bien de lAPI Gateway et non dun autre appelant.

A lheure actuelle, ce qui est dommage avec lAPI Gateway , cest quil nest pas possible de mettre lAPI Gateway publique et dappeler une ressource privée dans un VPC de votre AMAZON.

Par exemple dans notre cas, il nétait pas possible dappeler un Elastic Beanstalk dans un VPC. Il faut donc bien sécuriser dune manière ou dune autre Pour cela, les certificats clients peuvent permettre cette validation, même si ce nest pas lidéal.

Clé dAPI (Amazon Gateway)

Une clé dAPI peut servir à autoriser un de vos clients (au sens utilisateur de votre API) à effectuer un certain usage pour une certaine durée. On peut donc configurer des restrictions par clé. Il est possible dexporter lusage par clé, ce qui peut permettre une facturation à vos clients.

Par contre, il nest pas forcément évident dobliger à saisir une clé pour chaque appel. Le besoin de clé se configure au niveau de lappel dans la partie Ressource ce qui nest pas évident au premier abord.

Sécurisation avec Amazon Cognito

Il est possible de coupler la sécurité avec un Amazon Cognito. Pour rappel, ce service dAWS permet dassurer une inscription et une gestion de vos utilisateurs avec des comptes tels que Facebook, ou Google, ou tout simplement avec un LDAP ou un AD dentreprise. Cest assez simple à configurer directement pour toute lAPI, ce qui, on va se lavouer, est assez bien pratique 🙂 

Statistiques et usage de lAPI

Ce qui est très bien fait dans Amazon Api Gateway, cest la possibilité de visualiser simplement lusage de lAPI avec des statistiques très précises sur ce qui se passe : les temps de réponse, la latence

Dernier point intéressant, il est possible de mettre du cache sur lAPI directement depuis la console ce qui permet de très facilement utiliser API Gateway comme un proxy cache.

Points négatifs dAPI Gateway

De manière générale, API Gateway est très facile à prendre en main et est très performant. Le principal point négatif à nos yeux est la faible capacité de sécuriser les ressources en aval de lAPI Gateway avec, en particulier, la non possibilité dutiliser les VPC. Mais on espère que cela évoluera dans un futur proche !

Quelques liens pour aller plus loin sur AWS :

Spring Boot et Elastic Beanstalk