Premiers pas avec API Gateway et App Engine

Cette page explique comment configurer API Gateway pour gérer et sécuriser un service de backend App Engine.

Liste de tâches

Tout au long du tutoriel, reportez-vous à la liste de tâches présentée ci-dessous. Toutes les tâches sont requises pour déployer une passerelle API pour votre service de backend App Engine.

  1. Créez ou sélectionnez un projet Google Cloud.
  2. Si vous n'avez pas déployé votre propre application App Engine, déployez un exemple d'application. Consultez la section Avant de commencer.
  3. Activez les services API Gateway requis.
  4. Configurez IAP pour sécuriser votre application. Consultez la section Configurer IAP.
  5. Créez une spécification OpenAPI qui décrit votre API et configurez les routes vers votre application App Engine. Consultez la section Créer une configuration d'API.
  6. Déployez une passerelle API à l'aide de votre configuration d'API. Consultez la section Déployer une passerelle API.
  7. Suivez l'activité de vos applications. Consultez la section Suivre l'activité de l'API.
  8. Faites le nécessaire pour éviter que des frais ne soient facturés sur votre compte Google Cloud. Consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Dans la console Google Cloud, accédez à la page Tableau de bord, puis sélectionnez ou créez un projet Google Cloud.

    Accéder à la page "Tableau de bord"

  2. Assurez-vous que la facturation est activée pour votre projet.

    Découvrir comment activer la facturation

  3. Notez l'ID du projet que vous souhaitez utiliser pour ce tutoriel. Sur le reste de cette page, cet ID est appelé PROJECT_ID.

  4. Téléchargez et installez la Google Cloud CLI.

    Télécharger la gcloud CLI

  5. Mettez à jour les composants gcloud :

    gcloud components update
  6. Définissez le projet par défaut. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

    gcloud config set project PROJECT_ID

  7. Si vous n'avez pas déployé votre propre application App Engine, suivez les étapes du guide de démarrage rapide d'App Engine pour votre langage afin d'utiliser la Google Cloud CLI pour sélectionner ou créer un projet Google Cloud et déployer un exemple d'application. Notez l'URL de l'application, ainsi que la région et l'ID du projet où votre application est déployée.

Activer les services requis

API Gateway nécessite l'activation des services Google suivants :

Nom Titre
apigateway.googleapis.com API de la passerelle API
servicemanagement.googleapis.com API Service Management
servicecontrol.googleapis.com API Service Control

Pour confirmer que les services requis sont activés, procédez comme suit :

gcloud services list

Si les services requis ne sont pas répertoriés, activez-les :

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Pour en savoir plus sur les services gcloud, consultez la section Services gcloud.

Configurer IAP pour sécuriser votre application

Pour sécuriser votre application App Engine, vous devez utiliser le proxy Identity-Aware Proxy (IAP) afin d'assurer l'authentification des requêtes. Ce processus implique de spécifier les membres auxquels le rôle IAP-secured Web App User doit être attribué pour le projet.

Suivez les étapes de la section Activer IAP et assurez-vous que vous pouvez vous connecter à votre application.

Créer une configuration d'API

Pour que API Gateway puisse être utilisé afin de gérer le trafic vers votre backend App Engine déployé, il a besoin d'une configuration d'API.

Vous pouvez créer une configuration d'API à l'aide d'une spécification OpenAPI qui contient des annotations spécialisées pour définir le comportement souhaité pour API Gateway. Vous devez ajouter un champ spécifique à Google contenant l'URL de chaque application App Engine afin qu'API Gateway dispose des informations nécessaires pour appeler une application.

  1. Créez un fichier texte intitulé openapi2-appengine.yaml. Pour des raisons de commodité, cet article utilise ce nom de fichier pour désigner la spécification OpenAPI, mais vous pouvez le nommer autrement si vous préférez.
  2. Répertoriez chacune de vos applications dans la section paths du fichier openapi2-appengine.yaml, comme indiqué ci-dessous :
    # openapi2-appengine.yaml
    swagger: '2.0'
    info:
      title: API_ID optional-string
      description: Sample API on API Gateway with an App Engine backend
      version: 1.0.0
    schemes:
      - https
    produces:
      - application/json
    paths:
      /hello:
        get:
          summary: Greet a user
          operationId: hello
          x-google-backend:
            address: APP_URL
            jwt_audience: IAP_CLIENT_ID
          responses:
            '200':
              description: A successful response
              schema:
                type: string
  3. Dans le champ title, remplacez API_ID par le nom de votre API et optional-string par une brève description de votre choix. Si votre API n'existe pas encore, la commande permettant de créer la configuration d'API crée également l'API avec le nom que vous indiquez. La valeur du champ title est utilisée lors de la frappe des clés API qui accordent l'accès à cette API. Consultez les exigences concernant les identifiants d'API pour obtenir des consignes sur les noms d'API.
  4. Dans le champ address de la section x-google-backend, remplacez APP_URL par l'URL réelle de votre service App Engine (le chemin d'accès complet de l'API appelée). Exemple : https://myapp.an.r.appspot.com/hello.

    Remplacez IAP_CLIENT_ID par l'ID client OAuth que vous avez créé lors de la configuration d'IAP.

  5. Saisissez la commande suivante, où :
    • CONFIG_ID spécifie le nom de votre configuration d'API.
    • API_ID spécifie le nom de votre API. Si l'API n'existe pas déjà, cette commande la crée.
    • PROJECT_ID est le nom de votre projet Google Cloud.
    • SERVICE_ACCOUNT_EMAIL spécifie le compte de service utilisé pour signer les jetons pour les backends sur lesquels l'authentification est configurée.
    gcloud api-gateway api-configs create CONFIG_ID \
      --api=API_ID --openapi-spec=openapi2-appengine.yaml \
      --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

    Cette opération peut prendre plusieurs minutes, car la configuration de l'API est propagée aux systèmes en aval. La création d'une configuration d'API complexe peut prendre jusqu'à 10 minutes.

  6. Une fois la configuration de l'API créée, vous pouvez en afficher les détails en exécutant la commande suivante :
    gcloud api-gateway api-configs describe CONFIG_ID \
      --api=API_ID --project=PROJECT_ID

Déployer une passerelle API

Vous pouvez maintenant déployer votre API sur API Gateway. Le déploiement d'une API sur API Gateway définit également une URL externe que les clients API peuvent utiliser pour accéder à votre API.

Exécutez la commande suivante pour déployer la configuration d'API que vous venez de créer sur API Gateway :

gcloud api-gateway gateways create GATEWAY_ID \
  --api=API_ID --api-config=CONFIG_ID \
  --location=GCP_REGION --project=PROJECT_ID

où :

  • GATEWAY_ID spécifie le nom de la passerelle.
  • API_ID spécifie le nom de l'API API Gateway associée à cette passerelle.
  • CONFIG_ID spécifie le nom de la configuration d'API déployée sur la passerelle.
  • GCP_REGION est la région Google Cloud pour la passerelle déployée.

  • PROJECT_ID est le nom de votre projet Google Cloud.

Si l'opération réussit, vous pouvez utiliser la commande suivante pour afficher les détails de la passerelle :

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

Notez la valeur de la propriété defaultHostname dans le résultat de cette commande. Il s'agit de la partie nom d'hôte de l'URL de passerelle que vous utiliserez pour tester votre déploiement à l'étape suivante.

Tester votre déploiement d'API

Vous pouvez maintenant envoyer des requêtes à votre API en utilisant l'URL générée au moment du déploiement de votre passerelle.

Saisissez la commande curl suivante, où :

  • DEFAULT_HOSTNAME spécifie la partie nom d'hôte de l'URL de votre passerelle déployée. La valeur de defaultHostname se trouve dans le résultat de la commande gateways describe ci-dessus.
  • hello est le chemin d'accès spécifié dans la configuration de votre API.
curl https://DEFAULT_HOSTNAME/hello

Exemple :

curl https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Vous devriez obtenir le résultat suivant :

My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.

Opération réussie. API Gateway gère l'accès à votre service de backend App Engine. Pour accorder l'accès à votre application App Engine, vous devez configurer un compte de service avec les autorisations appropriées pour votre passerelle API.

Suivre l'activité de l'API

  1. Affichez les graphiques d'activité de votre API sur la page API Gateway de la console Google Cloud. Cliquez sur votre API pour afficher ses graphiques d'activité sur la page Présentation. Il peut s'écouler quelques instants avant que les requêtes ne soient reflétées dans les graphiques.

  2. Consultez les journaux de requêtes de votre API sur la page de l'explorateur de journaux. Un lien vers la page Explorateur de journaux est disponible sur la page API Gateway de la console Google Cloud.

    Accéder à la page API Gateway

    Une fois sur la page API Gateway :

    1. Sélectionnez l'API à afficher.
    2. Cliquez sur l'onglet Détails.
    3. Cliquez sur le lien sous Journaux.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce guide de démarrage rapide soient facturées sur votre compte Google Cloud, vous pouvez:

Vous pouvez également supprimer le projet Google Cloud utilisé pour ce tutoriel.