Architecture d'API Gateway
API Gateway est un système de gestion des API qui fournit la gestion, la surveillance et l'authentification de vos API. API Gateway est constitué des composants suivants:
- API Gateway : pour gérer tous les aspects d'une API déployée
- Service Control : permet d'appliquer les règles de gestion des API.
- Service Management : pour gérer les configurations d'API.
- gcloud CLI: pour le déploiement et la gestion de vos API
- Console Google Cloud: permet la journalisation, la surveillance et le partage.
Architecture
Vous trouverez ci-dessous un diagramme général des principaux composants impliqués dans API Gateway :
Dans ce diagramme :
Le fournisseur d'API est chargé de créer et de déployer une API sur API Gateway. Chaque API est définie par un fichier écrit en tant que spécification OpenAPI 2.0.
La spécification OpenAPI définit l'URL publique du point de terminaison REST pour l'API, le service de backend accessible par l'API et d'autres caractéristiques de l'API telles que l'authentification, le format des données et les options de réponse.
Le client de l'API envoie une requête REST à une API hébergée sur API Gateway pour accéder aux services backend. Un client d'API peut être n'importe quelle application capable d'effectuer un appel REST, comme un navigateur, une application mobile ou une application Web.
Le client API a uniquement besoin de connaître l'URL de l'API, le verbe de la requête (tel que
GET
,PUT
,POST
,DELETE
), les conditions requises pour l'authentification et le format des données envoyées à l'API ou reçues de celle-ci.Le client de l'API n'a pas besoin de connaître l'implémentation du backend. En fait, une seule API hébergée sur API Gateway peut être configurée pour accéder à différents backends en fonction des informations transmises dans la requête.
Composants d'API Gateway
API Gateway
API Gateway fournit une solution entièrement gérée et payée à l'utilisation pour l'hébergement de vos API. API Gateway fournit un accès sécurisé à vos services de backend via une API REST bien définie et cohérente entre tous vos services, quelle que soit leur implémentation.
API Gateway est intégré à Google Cloud afin que vous puissiez utiliser les mêmes outils de développement, de surveillance, de journalisation et de traçage que ceux que vous utilisez avec n'importe quel autre produit Google Cloud.
Si vous vous connectez à un service de backend hébergé en dehors de Google Cloud, vous pouvez tout de même profiter de tous les services Google Cloud, y compris les services d'authentification et d'autorisation utilisés pour contrôler l'accès à vos API.
API Service Control
L'API Service Control applique les règles de gestion des API lors de l'exécution, telles que l'authentification par clé API, la surveillance et la journalisation. Service Control utilise les méthodes suivantes :
- Vérification : vérifie les clés d'authentification et les clés API et indique si un appel doit être autorisé.
- Rapport : notifie les systèmes lors d'enregistrements de journalisation et de surveillance
API Service Management
Vous utilisez la spécification OpenAPI pour définir votre API. Vous utilisez ensuite gcloud CLI pour importer la spécification OpenAPI dans Service Management, ce qui crée la configuration de l'API. D'autres tâches liées à la configuration sont également effectuées ici, telles que le partage de votre API avec d'autres développeurs, l'activation et la désactivation de l'API dans différents projets et la génération de clés API.
CLI gcloud
La gcloud CLI fournit l'outil de ligne de commande gcloud, avec lequel vous pouvez appeler divers services Google Cloud. Utilisez la Google Cloud CLI pour importer votre spécification OpenAPI, ce qui crée la configuration d'API, puis pour déployer la configuration d'API sur API Gateway.
Cloud Console
Google Cloud Console est l'interface utilisateur graphique de Google Cloud. Utilisez la console Google Cloud pour exposer les données de surveillance et de journalisation enregistrées par Service Control, pour configurer l'authentification et l'autorisation, et pour permettre aux développeurs de générer des clés API pour appeler l'API.
Gérer une requête API
Dans une configuration d'API, il existe deux types de points de terminaison :
- Point de terminaison de l'API : définit le point de terminaison accessible au public que les clients utilisent pour utiliser vos API.
- Point de terminaison du backend: définit le point de terminaison que l'API utilise pour se connecter à votre service de backend. Les paramètres de sécurité, tels que l'accès HTTP ou HTTPS, sont définis par l'implémentation du service de backend.
Les requêtes envoyées à votre point de terminaison d'API sont transmises au point de terminaison du backend, y compris les données transmises dans la requête. Les réponses du service de backend, y compris les données renvoyées par le service, sont transmises au client.
Routage des requêtes
Lorsqu'une requête est reçue :
API Gateway crée un jeton de trace pour Cloud Trace.
API Gateway fait correspondre le chemin d'accès des requêtes entrantes avec l'API cible. Après avoir trouvé un chemin correspondant, API Gateway effectue toutes les étapes d'authentification pour l'API spécifiée.
Si la validation JWT est nécessaire, API Gateway valide l'authentification à l'aide de la clé publique appropriée pour le signataire et valide le champ d'audience dans le JWT. Si une clé API est requise, API Gateway appelle l'API Service Control pour la valider.
Service Control recherche la clé pour la valider et s'assure que le projet associé à la clé a activé l'API. Si la clé n'est pas valide ou si le projet n'a pas activé l'API, l'appel est rejeté et il est enregistré via l'API Service Control.
Si Service Control valide la clé, la requête, ainsi que tous les en-têtes d'origine, et l'en-tête de validation JWT le cas échéant, sont transmis au backend.
Lorsqu'une réponse est reçue du backend, API Gateway renvoie la réponse à l'appelant et envoie les informations de date et heure finales à Stackdriver Trace. Les points d'appel sont enregistrés par l'API Service Control, qui écrit les métriques et les journaux dans les destinations appropriées.