Premiers pas avec Cloud Endpoints pour Compute Engine avec ESPv2

Ce tutoriel vous explique comment configurer et déployer un exemple d'API et le proxy Extensible Service Proxy V2 (ESPv2) s'exécutant dans des conteneurs Docker prédéfinis sur Compute Engine.

L'API REST de l'exemple de code est décrite à l'aide de la spécification OpenAPI. Le tutoriel vous montre également comment créer une clé API et l'utiliser dans les requêtes adressées à l'API.

Pour obtenir une présentation de Cloud Endpoints, consultez les pages À propos de Cloud Endpoints et Architecture Cloud Endpoints.

Objectifs

Tout au long du tutoriel, reportez-vous au récapitulatif des étapes présenté ci-dessous. Toutes les tâches sont nécessaires pour envoyer des requêtes à l'API.

  1. configurer un projet Google Cloud ; Consultez la section Avant de commencer.
  2. Créez une instance de VM Compute Engine. Consultez la section Créer une instance Compute Engine.
  3. Téléchargez l'exemple de code. Consultez la section Obtenir l'exemple de code.
  4. Configurez le fichier openapi.yaml, utilisé pour configurer Endpoints. Consultez la section Configurer Endpoints.
  5. Déployez la configuration Endpoints pour créer un service Endpoints. Consultez la section Déployer la configuration Endpoints.
  6. Déployez l'API et ESPv2 sur la VM Compute Engine. Consultez la section Déployer le backend de l'API.
  7. Envoyez une requête à l'API via une adresse IP. Consultez la section Envoyer une requête à l'aide d'une adresse IP.
  8. Configurez un enregistrement DNS pour l'exemple d'API. Consultez la section Configurer le DNS pour Endpoints.
  9. Envoyez une requête à l'API via le nom de domaine complet. Consultez la section Envoyer une requête à l'aide du nom de domaine complet.
  10. Suivez l'activité de l'API. Consultez la section Suivre l'activité de l'API.
  11. Pour éviter que des frais ne soient facturés sur votre compte Google Cloud , Consultez la section Effectuer un nettoyage.

Coûts

Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :

Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai sans frais.

Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Notez l'ID de projet, car il sera nécessaire ultérieurement.
  7. Vous aurez besoin d'une application pour envoyer des requêtes à l'exemple d'API.

    • Utilisateurs Linux et macOS : ce tutoriel fournit un exemple utilisant curl, qui est généralement préinstallé sur votre système d'exploitation. Si vous ne disposez pas de curl, vous pouvez le télécharger sur la page Releases and Downloads de curl.
    • Utilisateurs Windows : ce tutoriel fournit un exemple d'utilisation de Invoke-WebRequest, compatible avec PowerShell 3.0 et versions ultérieures.
  8. Téléchargez Google Cloud CLI.
  9. Mettez à jour gcloud CLI et installez les composants Endpoints.
    gcloud components update
  10. Assurez-vous que la Google Cloud CLI (gcloud) est autorisée à accéder à vos données et services sur Google Cloud :
    gcloud auth login
    Dans le nouvel onglet de navigateur, sélectionnez un compte.
  11. Définissez le projet par défaut sur votre ID de projet.
    gcloud config set project YOUR_PROJECT_ID

    Remplacez YOUR_PROJECT_ID par l'ID du projet. Si vous avez d'autres projets Google Cloud et que vous souhaitez les gérer à l'aide de gcloud, consultez Gérer les configurations de gcloud CLI.

  12. Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Créer une instance Compute Engine

    Pour créer une instance Compute Engine, procédez comme suit :

    1. In the Google Cloud console, go to the Create an instance page.

      Go to Create an instance

    2. Dans la section Pare-feu, sélectionnez Autoriser le trafic HTTP et Autoriser le trafic HTTPS.
    3. Pour créer la VM, cliquez sur Créer.
    4. Capture d'écran de la fenêtre de création d'instance de VM avec l'ensemble des options requises

      Patientez un court instant le temps que l'instance démarre. Une fois l'instance prête, elle est répertoriée sur la page Instances de VM avec une icône d'état verte.

    5. Assurez-vous que vous pouvez vous connecter à votre instance de machine virtuelle.
      1. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
      2. Vous pouvez maintenant utiliser le terminal pour exécuter des commandes Linux sur votre instance Debian.
      3. Tapez exit pour vous déconnecter de l'instance.
    6. Notez le nom, la zone et l'adresse IP externe de l'instance, car vous en aurez besoin ultérieurement.

Télécharger l'exemple de code

Téléchargez l'exemple de code sur l'ordinateur local.

Java

Pour cloner ou télécharger l'exemple d'API :

  1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
    git clone https://github.com/GoogleCloudPlatform/java-docs-samples

    Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code :
    cd java-docs-samples/endpoints/getting-started
Python

Pour cloner ou télécharger l'exemple d'API :

  1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples

    Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code :
    cd python-docs-samples/endpoints/getting-started
Go

Pour cloner ou télécharger l'exemple d'API :

  1. Assurez-vous que la variable d'environnement GOPATH est définie.
  2. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
    go get -d github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
  3. Accédez au répertoire qui contient l'exemple de code :
    cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
PHP

Pour cloner ou télécharger l'exemple d'API :

  1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

    Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code :
    cd php-docs-samples/endpoints/getting-started
Ruby

Pour cloner ou télécharger l'exemple d'API :

  1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples

    Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code :
    cd ruby-docs-samples/endpoints/getting-started
NodeJS

Pour cloner ou télécharger l'exemple d'API :

  1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples

    Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code :
    cd nodejs-docs-samples/endpoints/getting-started

Configurer Endpoints

Vous devez disposer d'un document OpenAPI basé sur OpenAPI 2.0 ou OpenAPI 3.x décrivant la surface de vos applications, ainsi que les conditions requises pour l'authentification. Pour en savoir plus, consultez Versions OpenAPI compatibles.

Vous devez également ajouter un champ spécifique à Google contenant l'URL de chaque application afin qu'ESPv2 dispose des informations nécessaires pour appeler une application. Si vous débutez avec OpenAPI, consultez la page Présentation d'OpenAPI pour en savoir plus.

OpenAPI 2.0

Pour configurer Endpoints à l'aide d'une spécification OpenAPI 2.0, vous pouvez utiliser le fichier openapi.yaml disponible dans le répertoire endpoints/getting-started de l'exemple de code téléchargé.

Le contenu de la spécification OpenAPI 2.0 doit ressembler à ce qui suit :

swagger: "2.0"
info:
  description: "A simple Google Cloud Endpoints API example."
  title: "Endpoints Example"
  version: "1.0.0"

host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog"

consumes:
  - "application/json"
produces:
  - "application/json"

schemes:
# Uncomment the next line if you configure SSL for this API.
# - "https"
  - "http"

paths:
  /echo:
    post:
      description: "Echo back a given message."
      operationId: "echo"
      produces:
        - "application/json"
      responses:
        200:
          description: "Echo"
          schema:
            $ref: "#/definitions/echoMessage"
      parameters:
        -
          description: "Message to echo"
          in: body
          name: message
          required: true
          schema:
            $ref: "#/definitions/echoMessage"
      security:
        - api_key: []
  /auth/info/googlejwt:
    get:
      description: "Returns the requests' authentication information."
      operationId: "auth_info_google_jwt"
      produces:
        - "application/json"
      responses:
        200:
          description: "Authenication info."
          schema:
            $ref: "#/definitions/authInfoResponse"
      security:
        - api_key: []
          google_jwt: []
  /auth/info/googleidtoken:
    get:
      description: "Returns the requests' authentication information."
      operationId: "authInfoGoogleIdToken"
      produces:
        - "application/json"
      responses:
        200:
          description: "Authentication info."
          schema:
            $ref: "#/definitions/authInfoResponse"
      security:
        - api_key: []
          google_id_token: []

definitions:
  echoMessage:
    type: "object"
    properties:
      message:
        type: "string"
  authInfoResponse:
    properties:
      id:
        type: "string"
      email:
        type: "string"

securityDefinitions:
  # This section configures basic authentication with an API key.
  api_key:
    type: "apiKey"
    name: "key"
    in: "query"

  # This section configures authentication using Google API Service Accounts
  # to sign a json web token. This is mostly used for server-to-server
  # communication.
  google_jwt:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    # This must match the 'iss' field in the JWT.
    x-google-issuer: "jwt-client.endpoints.sample.google.com"
    # Update this with your service account's email address.
    x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR_SERVICE_ACCOUNT_EMAIL"
    # This must match the "aud" field in the JWT. You can add multiple
    # audiences to accept JWTs from multiple clients.
    x-google-audiences: "echo.endpoints.sample.google.com"
  # This section configures authentication using Google OAuth2 ID Tokens.
  # ID Tokens can be obtained using OAuth2 clients, and can be used to access
  # your API on behalf of a particular user.

  google_id_token:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "https://accounts.google.com"
    x-google-jwks_uri: "https://www.googleapis.com/oauth2/v3/certs"
    # Your OAuth2 client's Client ID must be added here. You can add
    # multiple client IDs to accept tokens from multiple clients.
    x-google-audiences: "YOUR_CLIENT_ID"

OpenAPI 3.x

Pour configurer Endpoints à l'aide d'une spécification OpenAPI 3.x, vous pouvez remplacer le contenu du fichier openapi.yaml disponible dans le répertoire endpoints/getting-started de l'exemple de code téléchargé :

  1. Ouvrez le fichier openapi.yaml dans votre éditeur de texte et remplacez son contenu par ce qui suit :
    openapi: 3.0.4
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    servers:
      - url: "http://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog"
        x-google-endpoint: {}
    
    paths:
      /echo:
        post:
          description: "Echo back a given message."
          operationId: "echo"
          requestBody:
            description: "Message to echo"
            required: true
            content:
              "application/json":
                schema:
                  $ref: "#/components/schemas/echoMessage"
          responses:
            '200':
              description: "Echo"
              content:
                "application/json":
                  schema:
                    $ref: "#/components/schemas/echoMessage"
          security:
            - api_key: []
    
      /auth/info/googlejwt:
        get:
          description: "Returns the requests' authentication information."
          operationId: "auth_info_google_jwt"
          responses:
            '200':
              description: "Authentication info."
              content:
                "application/json":
                  schema:
                    $ref: "#/components/schemas/authInfoResponse"
          security:
            - api_key: []
              google_jwt: []
    
      /auth/info/googleidtoken:
        get:
          description: "Returns the requests' authentication information."
          operationId: "authInfoGoogleIdToken"
          responses:
            '200':
              description: "Authentication info."
              content:
                "application/json":
                  schema:
                    $ref: "#/components/schemas/authInfoResponse"
          security:
            - api_key: []
              google_id_token: []
    
    components:
      schemas:
        echoMessage:
          type: "object"
          properties:
            message:
              type: "string"
        authInfoResponse:
          properties:
            id:
              type: "string"
            email:
              type: "string"
    
      securitySchemes:
        api_key:
          type: "apiKey"
          name: "key"
          in: "query"
    
        google_jwt:
          type: "oauth2"
          flows:
            implicit:
              authorizationUrl: ""
              scopes: {}
          x-google-auth:
            issuer: "jwt-client.endpoints.sample.google.com"
            jwksUri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR_SERVICE_ACCOUNT_EMAIL"
            audiences:
            - "echo.endpoints.sample.google.com"
    
        google_id_token:
          type: "oauth2"
          flows:
            implicit:
              authorizationUrl: ""
              scopes: {}
          x-google-auth:
            issuer: "https://accounts.google.com"
            jwks_uri: "https://www.googleapis.com/oauth2/v3/certs"
            audiences:
              - "YOUR_CLIENT_ID"
  2. Enregistrez le nouveau contenu de openapi.yaml.

Ce tutoriel utilise une extension propre à Google pour la spécification OpenAPI qui vous permet de configurer le nom du service. La méthode permettant de spécifier le nom du service dépend de la version de la spécification OpenAPI que vous utilisez.

OpenAPI 2.0

Utilisez le champ host pour spécifier le nom du service :

host: echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog

Pour configurer Endpoints :

  1. Ouvrez le fichier openapi.yaml.
  2. Dans le champ host, remplacez YOUR_PROJECT_ID par l'ID de votre projet Google Cloud .
  3. Enregistrez le fichier openapi.yaml.

OpenAPI 3.x

Utilisez le champ url dans l'objet servers pour spécifier le nom du service :

servers:
  - url: https://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog
    x-google-endpoint: {}

Pour configurer Endpoints :

  1. Ouvrez le fichier openapi.yaml.
  2. Si votre fichier openapi.yaml comporte un champ host, supprimez-le.
  3. Ajoutez un objet servers comme indiqué.
  4. Dans le champ url, remplacez YOUR_PROJECT_ID par l'ID de votre projet Google Cloud .
  5. Enregistrez le fichier openapi.yaml.

Une fois que vous avez terminé toutes les étapes de configuration suivantes pour pouvoir envoyer des requêtes à l'exemple d'API à l'aide d'une adresse IP, consultez la section Configurer le DNS pour Endpoints afin d'obtenir des informations sur la configuration de echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog en tant que nom de domaine complet.

Déployer la configuration Endpoints

Pour déployer la configuration Endpoints, exécutez la commande gcloud endpoints services deploy. Celle-ci crée un service géré à l'aide de Service Management.

Pour déployer la configuration Endpoints :

  1. Assurez-vous de vous trouver dans le répertoire où se trouve votre fichier de configuration openapi.yaml.
  2. Importez la configuration et créez un service géré :
    gcloud endpoints services deploy openapi.yaml
    

La commande gcloud appelle ensuite l'API Service Management pour créer un service géré avec le nom que vous avez spécifié dans le champ host ou servers.url du fichier openapi.yaml. Service Management configure le service en fonction des paramètres du fichier openapi.yaml. Lorsque vous apportez des modifications au fichier openapi.yaml, vous devez le redéployer pour mettre à jour le service Endpoints.

Lors de la création et de la configuration du service, Service Management envoie des informations au terminal. Vous pouvez ignorer en toute sécurité les avertissements concernant les chemins du fichier openapi.yaml qui ne nécessitent pas de clé d'API. Une fois la configuration du service terminée, Service Management affiche un message avec l'ID de configuration du service et le nom du service, comme illustré ci-dessous :

Service Configuration [2017-02-13r0] uploaded for service [echo-api.endpoints.example-project-12345.cloud.goog]

Dans l'exemple ci-dessus, 2017-02-13r0 correspond à l'ID de configuration du service et echo-api.endpoints.example-project-12345.cloud.goog au service Endpoints. L'ID de configuration du service se compose d'un horodatage, suivi d'un numéro de révision. Si vous déployez à nouveau le fichier openapi.yaml le même jour, le numéro de révision est incrémenté dans l'ID de configuration de service. Vous pouvez afficher la configuration de service Endpoints sur la page Endpoints > Services de la console Google Cloud .

Si vous recevez un message d'erreur, consultez la section Résoudre des problèmes de déploiement de la configuration Endpoints.

Vérifier les services requis

Endpoints et ESP requièrent au minimum l'activation des services Google suivants :
Nom Titre
servicemanagement.googleapis.com API Service Management
servicecontrol.googleapis.com API Service Control

Dans la plupart des cas, la commande gcloud endpoints services deploy permet d'activer ces services requis. Toutefois, bien que la commande gcloud ait abouti, elle n'active pas les services requis dans les cas suivants :

  • Vous avez utilisé une application tierce telle que Terraform et vous n'incluez pas ces services.

  • Vous avez déployé la configuration Endpoints dans un projetGoogle Cloud existant dans lequel ces services étaient explicitement désactivés.

Utilisez la commande suivante pour vérifier que les services nécessaires sont activés :

gcloud services list

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

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

Activez également votre service Endpoints :

gcloud services enable ENDPOINTS_SERVICE_NAME

Pour déterminer la valeur de ENDPOINTS_SERVICE_NAME, vous pouvez effectuer l'une des opérations suivantes :

  • Après avoir déployé la configuration Endpoints, accédez à la page Endpoints de la console Cloud. La liste des valeurs ENDPOINTS_SERVICE_NAME possibles s'affiche dans la colonne Nom du service.

  • Pour OpenAPI, ENDPOINTS_SERVICE_NAME correspond à ce que vous avez spécifié dans le champ host de votre spécification OpenAPI. Pour gRPC, ENDPOINTS_SERVICE_NAME correspond à ce que vous avez spécifié dans le champ name de votre configuration Endpoints gRPC.

Pour en savoir plus sur les commandes gcloud, consultez la page Services gcloud.

Déployer le backend de l'API

Vous avez déployé le document OpenAPI sur Service Management, mais vous n'avez pas encore déployé le code qui diffuse le backend de l'API. Cette section vous guide tout au long de la configuration de Docker sur votre instance de VM, et de l'exécution du code de backend de l'API et d'ESPv2 dans un conteneur Docker.

Vérifier les autorisations requises

  • Dans la console Google Cloud , accédez à la page "Instances Compute Engine".

    Accéder à la page "Compute Engine"

  • Sélectionnez votre instance dans la liste.
  • Vous pouvez voir le compte de service associé et les autorisations dont il dispose.
  • Accordez des autorisations au compte de service :

    gcloud projects add-iam-policy-binding PROJECT_NAME \
      --member "serviceAccount:SERVICE_ACCOUNT" \
      --role roles/servicemanagement.serviceController
    

    Pour en savoir plus, consultez la page Que sont les rôles et les autorisations ?

Installer Docker sur l'instance de VM

Pour installer Docker sur l'instance de VM :

  1. Définissez la zone du projet en exécutant la commande suivante :
    gcloud config set compute/zone YOUR_INSTANCE_ZONE
    

    Remplacez YOUR_INSTANCE_ZONE par la zone où l'instance est en cours d'exécution.

  2. Connectez-vous à l'instance à l'aide de la commande suivante :
    gcloud compute ssh INSTANCE_NAME
    

    Remplacez INSTANCE_NAME par le nom de votre instance de VM.

  3. Consultez la documentation de Docker pour configurer le dépôt Docker. Veillez à suivre les étapes correspondant à la version et à l'architecture de votre instance de VM :
    • Jessie ou plus récent
    • x86_64/amd64

Exécuter l'API et l'ESPv2 dans un conteneur Docker

ESPv2 est un proxy basé sur Envoy qui se trouve devant votre code de backend. Il traite le trafic entrant pour fournir l'authentification, la gestion des clés API, la journalisation et d'autres fonctionnalités de gestion des API Endpoints. Pour installer et exécuter l'exemple d'API ainsi qu'ESPv2 dans un conteneur Docker :

  1. Créez votre propre réseau de conteneurs appelé esp_net.
    sudo docker network create --driver bridge esp_net
    
  2. Exécutez l'exemple de serveur Echo qui diffuse l'exemple d'API :
    Java
    sudo docker run --detach --name=echo --net=esp_net gcr.io/google-samples/echo-java:1.0
    
    Python
    sudo docker run --detach --name=echo --net=esp_net gcr.io/google-samples/echo-python:1.0
    
    Go
    sudo docker run --detach --name=echo --net=esp_net gcr.io/google-samples/echo-go:1.0
    
    PHP
    sudo docker run --detach --name=echo --net=esp_net gcr.io/google-samples/echo-php:1.0
    
    Ruby
    sudo docker run --detach --name=echo --net=esp_net gcr.io/google-samples/echo-ruby:1.0
    
    NodeJS
    sudo docker run --detach --name=echo --net=esp_net gcr.io/google-samples/echo-node:1.0
    
  3. Exécutez le conteneur Docker ESPv2 public pré-empaqueté. Dans les options de démarrage d'ESPv2, remplacez SERVICE_NAME par le nom de votre service. Il s'agit du nom que vous avez configuré comme nom d'hôte dans votre document OpenAPI.

    sudo docker run \
        --detach \
        --name=esp \
        --publish=80:9000 \
        --net=esp_net \
        gcr.io/endpoints-release/endpoints-runtime:2 \
        --service=SERVICE_NAME \
        --rollout_strategy=managed \
        --listener_port=9000 \
        --backend=http://echo:8080
    

    L'option --rollout_strategy=managed configure ESPv2 afin d'utiliser la dernière configuration de service déployée. Si cette option est spécifiée, une minute après le déploiement d'une nouvelle configuration de service, ESPv2 détecte la modification et commence à l'utiliser automatiquement. Nous vous recommandons de spécifier cette option plutôt que de fournir un ID de configuration spécifique à utiliser avec ESPv2. Pour en savoir plus sur les autres options à utiliser avec ESPv2, consultez la section Options de démarrage d'ESPv2.

Si vous recevez un message d'erreur, consultez la page Résoudre les problèmes liés à Cloud Endpoints sur Compute Engine. Consultez la section Déployer le backend de l'API pour plus d'informations.

Envoyer une requête à l'aide d'une adresse IP

Une fois que l'exemple d'API et ESPv2 sont en cours d'exécution sur l'instance Compute Engine, vous pouvez envoyer des requêtes à l'API à partir de votre machine locale.

Créer une clé API et définir une variable d'environnement

L'exemple de code nécessite une clé API. Pour simplifier la requête, définissez une variable d'environnement pour la clé API.

  1. Dans le même projet Google Cloud que celui utilisé pour votre API, créez une clé API sur la page des identifiants de l'API. Si vous souhaitez créer une clé API dans un autre projet Google Cloud , consultez Activer une API dans votre projet Google Cloud .

    Accéder à la page Identifiants

  2. Cliquez sur Créer les identifiants, puis sélectionnez Clé API.
  3. Copiez la clé dans le presse-papier.
  4. Cliquez sur Fermer.
  5. Sur l'ordinateur local, collez la clé API pour l'attribuer à une variable d'environnement :
    • Sous Linux ou macOS : export ENDPOINTS_KEY=AIza...
    • Dans Windows PowerShell : $Env:ENDPOINTS_KEY="AIza..."

Envoyer la requête

Linux ou macOS

Utilisez curl pour envoyer une requête HTTP à l'aide de la variable d'environnement ENDPOINTS_KEY définie précédemment. Remplacez IP_ADDRESS par l'adresse IP externe de l'instance.

curl --request POST \
   --header "content-type:application/json" \
   --data '{"message":"hello world"}' \
   "http://IP_ADDRESS:80/echo?key=${ENDPOINTS_KEY}"

Dans la commande curl ci-dessus :

  • L'option --data indique les données à publier sur l'API.
  • L'option --header indique que les données sont au format JSON.

PowerShell

Utilisez Invoke-WebRequest pour envoyer une requête HTTP à l'aide de la variable d'environnement ENDPOINTS_KEY définie précédemment. Remplacez IP_ADDRESS par l'adresse IP externe de l'instance.

(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
    -Headers @{"content-type"="application/json"} `
    -URI "http://IP_ADDRESS:80/echo?key=$Env:ENDPOINTS_KEY").Content

Dans l'exemple ci-dessus, les deux premières lignes se terminent par un accent grave. Lorsque vous collez l'exemple dans PowerShell, assurez-vous qu'il n'y a pas d'espace après les accents graves. Pour plus d'informations sur les options utilisées dans l'exemple de requête, consultez la page Invoke-WebRequest dans la documentation Microsoft.

Application tierce

Vous pouvez utiliser une application tierce telle que l'extension Postman du navigateur Chrome pour envoyer la requête :

  • Sélectionnez POST comme verbe HTTP.
  • Pour l'en-tête, sélectionnez la clé content-type et la valeur application/json.
  • Pour le corps, saisissez ce qui suit :
    {"message":"hello world"}
  • Dans l'URL, utilisez la clé API réelle plutôt que la variable d'environnement. Par exemple :
    http://192.0.2.0:80/echo?key=AIza...

L'API renvoie le message que vous lui avez envoyé et répond avec les éléments suivants :

{
  "message": "hello world"
}

Si vous ne recevez pas de réponse positive, consultez la section Dépanner des erreurs de réponse.

Vous venez de déployer et de tester une API dans Endpoints.

Configurer le DNS pour Endpoints

<< "endpoints/docs/_shared/_configuring-endpoints-dns.md" >>

Envoyer une requête à l'aide du nom de domaine complet

<< "endpoints/docs/_shared/_send-request-fqdn.md" >>

Suivre l'activité de l'API

Pour suivre l'activité de l'API :

  1. Examinez les graphiques d'activité de l'API dans la page Endpoints > Services.

    Accédez à la page Services Endpoints


    Il peut s'écouler quelques instants avant que la requête ne soit reflétée dans les graphiques.
  2. Consultez les journaux de requêtes de votre API sur la page de l'explorateur de journaux.

    Accéder à la page "Explorateur de journaux"

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Effectuer un nettoyage

  1. Supprimez l'API :
    gcloud endpoints services delete SERVICE_NAME

    Remplacez SERVICE_NAME par le nom du service.

  2. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  3. Select the checkbox for the instance that you want to delete.
  4. To delete the instance, click More actions, click Delete, and then follow the instructions.

Étapes suivantes