APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. Gateway d’Amazon 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 qu’on pourrait comparer à une sorte de super proxy pour vos APIs.
L’objectif d’API Gateway est de pouvoir proposer une API sur le WEB. Les fonctionnalités offertes par le service sont particulièrement intéressantes :
Pour commencer, il faut créer son API ! Pour cela, deux solutions :
– votre API possède un Swagger et vous pouvez l’importer directement
– vous êtes obligé de créer chaque méthode à la main ( ce qui, entre nous, n’est 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 l’interface et choisir l’URLUniform 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 d’entrée de la méthode. Cette fonction est très pratique si vous avez plusieurs versions de l’API qui n’ont pas les mêmes paramètres d’entrée.
Une fois l’API documentée, il faut réaliser « un déploiement », ce qui correspond généralement à une version de l’API ou à un Environnement (dev, rec, prod). Cette notion s’appelle l’ETAPE.
Une fois sur l’ETAPE, l’API est prête à être directement appelée. L’URL d’accès se situe en haut de la page. A ce moment, il est possible d’appliquer des restrictions d’appels et d’utiliser le certificat client.
Le certificat client est un certificat SSL qui permet de valider, côté API, que vos appels proviennent bien de l’API Gateway et non d’un autre appelant.
A l’heure actuelle, ce qui est dommage avec l’API Gateway , c’est qu’il n’est pas possible de mettre l’API Gateway publique et d’appeler une ressource privée dans un VPC de votre AMAZON.
Par exemple dans notre cas, il n’était pas possible d’appeler un Elastic Beanstalk dans un VPC. Il faut donc bien sécuriser d’une manière ou d’une autre… Pour cela, les certificats clients peuvent permettre cette validation, même si ce n’est pas l’idéal.
Une clé d’API 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 d’exporter l’usage par clé, ce qui peut permettre une facturation à vos clients.
Par contre, il n’est pas forcément évident d’obliger à saisir une clé pour chaque appel. Le besoin de clé se configure au niveau de l’appel dans la partie Ressource ce qui n’est pas évident au premier abord.
Il est possible de coupler la sécurité avec un Amazon Cognito. Pour rappel, ce service d’AWS permet d’assurer 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 d’entreprise. C’est assez simple à configurer directement pour toute l’API, ce qui, on va se l’avouer, est assez bien pratique 🙂
Ce qui est très bien fait dans Amazon Api Gateway, c’est la possibilité de visualiser simplement l’usage de l’API 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 l’API directement depuis la console ce qui permet de très facilement utiliser API Gateway comme un proxy cache.
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 l’API Gateway avec, en particulier, la non possibilité d’utiliser les VPC. Mais on espère que cela évoluera dans un futur proche !
Ça y est, tu viens de valider ton diplôme à l’issu de plusieurs années d’études en informatique. Bravo, tu peux être fier ! Mais il reste un détail à régler… trouver ton premier emploi de développeur !
Tuto - JAVA 8 – Map – ComputeIfAbsent pour la gestion des caches
Tuto - Les nativeQuery en Hibernate 4, ou comment lancer une requête écrite « en dur »