Accédez à plus de 700 ateliers et cours

Développement d'applications : Déployer une API pour l'application Quiz – Node.js

Atelier 2 heures universal_currency_alt 5 crédits show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Dans cet atelier, vous allez déployer l'API de l'application Quiz dans Google Compute Engine en exploitant la fonctionnalité de surveillance de Cloud Endpoints.

Objectifs

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Créer une spécification OpenAPI à partir de l'API REST existante de l'application Quiz
  • Déployer la spécification en tant que point de terminaison Cloud
  • Provisionner une instance Compute Engine avec Extensible Service Proxy pour héberger l'API Cloud Endpoints

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Préparer l'application de l'étude de cas

Dans cette section, vous allez accéder à Cloud Shell, cloner le dépôt Git qui contient l'application Quiz, configurer les variables d'environnement et exécuter l'application.

Cloner le code source dans Cloud Shell

  1. Pour cloner le dépôt du cours, exécutez la commande suivante :
git clone --depth=1 https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Créez un lien symbolique qui servira de raccourci vers le répertoire de travail :
ln -s ~/training-data-analyst/courses/developingapps/v1.3/nodejs/cloudendpoints ~/cloudendpoints

Configurer et exécuter l'application de l'étude de cas

  1. Passez au répertoire qui contient les exemples de fichiers de l'atelier :
cd ~/cloudendpoints/start
  1. Pour remplacer la région par défaut d'un fichier par celle qui a été attribuée à l'atelier, exécutez les commandes suivantes :
export APP_REGION={{{project_0.startup_script.app_gcp_region | APP_REGION}}} export REGION={{{project_0.default_region | REGION}}} sed -i 's/us-central1/'"$REGION"'/g' prepare_environment.sh sed -i 's/us-central/'"$APP_REGION"'/g' prepare_environment.sh
  1. Pour configurer l'application Quiz, exécutez la commande suivante :
. prepare_environment.sh

Si le message Bind the role to service account? (y/n) s'affiche, saisissez n.

Remarque – Ce fichier de script :
  • crée une application App Engine ;
  • crée la base de données Datastore ;
  • exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;
  • exécute la commande npm install ;
  • crée des entités dans Cloud Datastore ;
  • installe un générateur OpenAPI nommé api2swagger ;
  • affiche l'ID du projet Google Cloud Platform.

Si vous voyez le message d'erreur ERROR: (gcloud.functions.deploy), relancez la commande gcloud functions deploy qui s'affiche après l'exécution de cat ./prepare_environment.sh.

Vous pouvez exécuter gcloud functions list pour vérifier que la fonction est créée et disponible.

Remarque : Dans cet atelier, vous pouvez ignorer sans problème les avertissements qui se déclenchent lors de l'installation du générateur OpenAPI.
  1. Pour exécuter l'application Web, lancez la commande suivante :
npm start

L'application s'exécute désormais dans Cloud Shell.

  1. Dans Cloud Shell, cliquez sur Aperçu sur le Web > Prévisualiser sur le port 8080 pour prévisualiser l'application Quiz.
  2. Modifiez l'URL en ajoutant /api/quizzes/places à la fin du nom d'hôte. Remplacez /?authuser=0 par /api/quizzes/places.
Remarque : Les données JSON renvoyées par l'API de l'application Quiz doivent correspondre aux questions du questionnaire Places.
  1. Notez l'URL complète de l'API que vous utiliserez plus tard dans cet atelier et enregistrez-la pour pouvoir la coller dans une commande dans la section suivante.
Remarque : L'URL se présente comme suit : https://8080-cs-***.cloudshell.dev/api/quizzes/places.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Configurer et exécuter l'application de l'étude de cas

Tâche 2 : Générer une spécification OpenAPI

Dans cette section, vous allez générer une spécification OpenAPI qui servira de base pour le déploiement de votre point de terminaison Cloud.

Créer une spécification OpenAPI

  1. Ouvrez une deuxième fenêtre Cloud Shell.

  2. Ouvrez un nouvel onglet en cliquant sur le signe plus icône Ajouter dans le terminal.

  3. Pour remplacer le répertoire par le dossier de travail Cloud Endpoints, exécutez la commande suivante :

cd ~/cloudendpoints/start/endpoint
  1. Mettez à jour la variable d'environnement PATH pour définir le chemin d'accès à la commande api2swagger :
export PATH=$PATH:`npm root -g`/api2swagger/bin
  1. Pour installer le package Python api2swagger :
npm install -g api2swagger
  1. Pour générer la spécification OpenAPI, exécutez la commande suivante en remplaçant [API_URL_FROM_CLIPBOARD] par l'URL de l'API enregistrée à l'étape précédente au format https://8080-cs-.../api/quizzes/places :
api2swagger -e [API_URL_FROM_CLIPBOARD] -o ./quiz-api.json Remarque : L'outil api2swagger envoie la requête à l'API et affiche une série de requêtes. Si le remplacement n'est pas effectué correctement, un message d'erreur Nom d'hôte incorrect s'affiche.
  1. Saisissez des réponses aux requêtes api2swagger à l'aide de la table suivante :

Requête

Réponse

Title of Swagger Spec ?

Quite Interesting Quiz API

Description of Swagger Spec ?

An API for the Quite Interesting Quiz

Terms of Service URL

(Press enter key)

Version of your API Program ?

(Press enter key)

Contact Name?

(Press enter key)

Contact URL ?

(Press enter key)

Contact Email ?

(Press enter key)

License Name ?

(Press enter key)

License URL ?

(Press enter key)

Does your API support http ?

Y

Pick Base Path from your API ?

Utilisez les flèches vers le haut et vers le bas pour sélectionner :

❯ /api/quizzes

(Press enter key)

A verbose explanation of the operation behavior ?

Gets questions for a quiz

A short summary of what the operation does ?

Get quiz questions

Additional external documentation for this operation ?

(Press enter key)

Unique string used to identify the operation ?

getQuizQuestions

A list of tags for API documentation control ?

(Press enter key)

API Path has any dynamic parameters ?

Y (Press enter key)

Choose Dynamic Params in URL ?

Utilisez les flèches vers le haut et vers le bas pour accéder à
❯◉ Places


Appuyez ensuite sur la barre d'espace pour sélectionner des lieux, puis sur Entrée.

Name of URL Param ?

quizName

Description of URL Param ?

The name of the quiz

Type of query param ?

Utilisez les flèches vers le haut et vers le bas pour sélectionner
❯ string

(Press enter key)

Remarque : L'outil api2swagger affiche le résultat de la spécification OpenAPI.

Modifier la spécification OpenAPI

  1. Dans Cloud Shell, cliquez sur Ouvrir l'éditeur.

Si le blocage des cookies tiers est activé, vous devrez peut-être cliquer sur Ouvrir dans une nouvelle fenêtre.

  1. Accédez à cloudendpoints/start/endpoint.
  2. Dans l'éditeur de code Cloud Shell, ouvrez quiz-api.json.
  3. Remplacez la valeur de la clé host par un nom d'hôte utilisant une chaîne au format quiz-api.endpoints.[Project-ID].cloud.goog.
Remarque : L'exemple suivant montre la modification apportée à la ligne host.

Veillez à remplacer [GCP-Project-ID] par votre ID de projet GCP.

Vous trouverez l'ID du projet GCP dans le panneau de gauche des instructions de l'atelier, sous vos identifiants.

endpoint/quiz-api.json

{ "swagger": "2.0", "host": "quiz-api.endpoints.qwiklabs-gcp-XX-XXXX.cloud.goog", "schemes": [ "https", "http" ], Remarque : Lorsque vous déploierez votre spécification OpenAPI dans la section suivante, l'API Service Management utilisera la valeur "host" du fichier de configuration du déploiement pour créer un service Cloud Endpoints nommé quiz-api.endpoints.[PROJECT-ID].cloud.goog (s'il n'existe pas), puis configurera le service en fonction de votre fichier de configuration OpenAPI.

Cloud Endpoints utilise des noms compatibles avec DNS pour identifier de manière unique les services. Étant donné que les projets Google Cloud Platform ont un nom unique, vous pouvez utiliser le nom de votre projet pour créer un nom de service d'API unique. Vous pouvez également mapper votre propre nom DNS à votre API.
  1. Enregistrez le fichier.

Déployer la spécification OpenAPI sur Cloud Endpoints

  1. Cliquez sur "Ouvrir le terminal" pour revenir à Cloud Shell.

  2. Pour déployer la spécification OpenAPI en tant que point de terminaison Cloud, exécutez la commande suivante dans la fenêtre Cloud Shell :

gcloud endpoints services deploy quiz-api.json

Si une erreur de type PERMISSION_DENIED: Ownership for domain name s'affiche, assurez-vous que le champ host du fichier quiz-api.json correspond au format suggéré. En particulier, l'ID de votre projet doit être correct.

Remarque : Le déploiement de la définition du service prend quelques minutes. Un avertissement vous indique que l'API est disponible pour tous les clients sans fournir de clé.
  1. Pour afficher le nom de la configuration OpenAPI, exécutez la commande suivante :
gcloud endpoints configs list --service="quiz-api.endpoints.$GOOGLE_CLOUD_PROJECT.cloud.goog"

Vous remarquerez que l'ID du projet a été inséré. Vous pouvez copier le service à partir de la sortie de la commande deploy.

Remarque : La configuration du service (avec les champs CONFIG_ID et SERVICE_NAME) sera renvoyée. Vous aurez besoin de ces deux valeurs dans la section suivante.

Tâche 3 : Déployer le backend de l'API

Dans cette section, vous allez provisionner une instance Compute Engine afin qu'elle exécute l'implémentation de l'API et le proxy Extensible Service Proxy de Cloud Endpoints.

Créer une instance Compute Engine

  1. Dans la console Cloud, accédez au menu de navigation (☰), puis cliquez sur Compute Engine > Instances de VM.
  2. Pour créer une instance, cliquez sur Créer une instance.
  3. Sur la page Configuration de la machine, saisissez les valeurs pour les champs suivants :

Champ

Valeur

Nom

endpoint-host

Région

Zone

Série

E2

Type de machine > Cœur partagé

e2-small

  1. Cliquez sur OS et stockage.

    Cliquez sur Modifier pour commencer à configurer le disque de démarrage et sélectionnez les valeurs suivantes :

    • Système d'exploitation : Debian
    • Version : Debian GNU/Linux 11 (bullseye)
  2. Cliquez sur Mise en réseau.

  3. Dans Pare-feu, cliquez sur Autoriser le trafic HTTP.

  4. Cliquez sur Sécurité.

  5. Dans la section Niveaux d'accès, cliquez sur Autoriser l'accès complet à l'ensemble des APIs Cloud.

  6. Cliquez sur Paramètres avancés.

  7. Sous Métadonnées, cliquez deux fois sur + Ajouter un élément.

  8. Saisissez les valeurs de métadonnées suivantes :

endpoints-service-config-id

Identifiant du point de terminaison (CONFIG_ID) au format
yyyy-mm-ddr0

endpoints-service-name

Nom du point de terminaison (SERVICE_NAME) au format suivant :

quiz-api.endpoints.<Project-ID>.cloud.goog

  1. Cliquez sur Créer.

Attendez la fin du provisionnement de la VM.

Remarque : Le provisionnement de l'instance Compute Engine avec Debian prend environ 20 secondes.

Installer et exécuter le backend de l'API

  1. Retournez dans la fenêtre Cloud Shell.
  2. Pour vous assurer que le répertoire de travail est défini sur le dossier endpoint, exécutez la commande suivante :
cd ~/cloudendpoints/start/endpoint/
  1. Pour copier les fichiers sources de l'application de Cloud Shell vers endpoint-host, exécutez la commande suivante :
gcloud compute scp ./quiz-api endpoint-host:~/ --recurse --zone={{{project_0.default_zone | ZONE}}} Remarque : Vous devrez peut-être créer une clé SSH. Vous pouvez appuyer sur la touche Entrée pour chaque requête, y compris sur Y pour créer le répertoire .ssh.

La copie des fichiers peut prendre quelques secondes.
  1. Retournez à la console Cloud Platform.
  2. Sur la page Compute Engine, cliquez sur SSH pour vous connecter à la machine virtuelle endpoint-host.
Remarque : Si vous utilisez un bloqueur de pop-up, vous devrez peut-être cliquer deux fois. L'établissement de la connexion SSH prend quelques secondes.
  1. Dans la fenêtre SSH de endpoint-host, installez les prérequis logiciels :
sudo apt-get install ca-certificates curl gnupg -y sudo mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg NODE_MAJOR=20 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list sudo apt-get update sudo apt-get install nodejs -y

Cliquez sur Vérifier ma progression pour valider l'objectif.

Créer une instance Compute Engine et installer les prérequis logiciels
  1. Pour exécuter l'API de l'application Quiz, exécutez les commandes suivantes dans la session SSH :
export GCLOUD_PROJECT="$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/project/project-id)" export GCLOUD_BUCKET=$GCLOUD_PROJECT-media export PORT=8081 cd ~/quiz-api npm install npm start
  1. Revenez à la console Cloud Platform, qui doit toujours afficher la liste des instances de VM Compute Engine.
  2. Établissez une deuxième connexion SSH à endpoint-host.
  3. Dans la deuxième fenêtre SSH endpoint-host, exécutez les commandes suivantes pour installer le proxy Extensible Service Proxy de Cloud Endpoints :
export CLOUD_ENDPOINTS_REPO="google-cloud-endpoints-jessie" echo "deb http://packages.cloud.google.com/apt $CLOUD_ENDPOINTS_REPO main" | sudo tee /etc/apt/sources.list.d/google-cloud-endpoints.list curl --silent https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-get update && sudo apt-get install endpoints-runtime
  1. Toujours dans la deuxième fenêtre SSH endpoint-host, exécutez la commande suivante pour modifier le fichier de configuration nginx :
sudo nano /etc/default/nginx
  1. Pour modifier le fichier, ajoutez la déclaration suivante après la configuration existante :
PORT=80
  1. Enregistrez le fichier (appuyez sur Ctrl+O puis sur Entrée).
  2. Quittez nano (appuyez sur Ctrl+X).
  3. Pour redémarrer nginx, exécutez la commande suivante :
sudo service nginx restart

Tâche 4 : Tester et modifier le point de terminaison Cloud

Dans cette section, vous allez vérifier le déploiement du point de terminaison et modifier la configuration afin d'autoriser la diffusion via un nom d'hôte plutôt qu'une adresse IP.

Appeler le point de terminaison Cloud via l'adresse IP

  1. Revenez dans la console Cloud Platform > Compute Engine.
  2. Pour lancer une fenêtre de navigateur, cliquez sur l'adresse IP externe de la machine virtuelle endpoint-host.
Remarque : Un message JSON indiquant Method does not exist (La méthode n'existe pas) s'affiche dans la nouvelle fenêtre du navigateur. Ce comportement est normal, car vous n'avez pas associé de méthode à "/". Aucune action n'est requise de votre part.
  1. Ajoutez /api/quizzes/places à la fin de l'URL.
Remarque : Les données JSON renvoyées par l'API Quiz doivent s'afficher.
  1. Dans le Menu de navigation de la console Cloud Platform, cliquez sur Points de terminaison, puis sur le point de terminaison déployé.
Remarque : Une page de surveillance doit s'afficher pour le point de terminaison quiz-api. Après quelques minutes, la requête que vous avez envoyée sur le point de terminaison doit s'afficher.

Modifier et redéployer la configuration du point de terminaison Cloud

  1. Retournez dans l'éditeur de code Cloud Shell, puis sélectionnez le fichier quiz-api.json.
  2. Pour autoriser l'accès à l'API via le nom d'hôte du point de terminaison Cloud au lieu de l'adresse IP, ajoutez la clé x-google-endpoints et la valeur affichées dans le fragment de fichier suivant :

endpoint/quiz-api.json

{ "swagger": "2.0", "host": "quiz-api.endpoints.<Project-ID>.cloud.goog", "x-google-endpoints": [ { "name": "quiz-api.endpoints.<Project-ID>.cloud.goog", "target": "<endpoint-host-EXTERNAL-IP-ADDRESS>" } ], "schemes": [ "https", "http" ],
  1. Modifiez les valeurs définies dans <Project-ID> et <endpoint-host-EXTERNAL-IP-ADDRESS>, puis enregistrez le fichier.

La configuration modifiée devrait ressembler à ceci :

{ "swagger": "2.0", "host": "quiz-api.endpoints.qwiklabs-gcp-04-a7b3469e256f.cloud.goog", "x-google-endpoints": [ { "name": "quiz-api.endpoints.qwiklabs-gcp-04-a7b3469e256f.cloud.goog", "target": "34.172.61.246" } ], "schemes": [ "https", "http" ],
  1. Pour redéployer l'API, revenez à la fenêtre Cloud Shell et exécutez la commande suivante :
gcloud endpoints services deploy quiz-api.json
  1. Ouvrez un nouvel onglet de navigateur et accédez à l'adresse http://quiz-api.endpoints.<Project-ID>.cloud.goog/api/quizzes/gcp.
Remarque : Les données JSON du questionnaire GCP doivent s'afficher.

Tâche 5 : Surveiller l'API

Dans cette section, vous allez examiner le résultat de la surveillance provenant de votre API.

Inspecter l'API dans la console

  1. Revenez dans le menu de navigation de la console Cloud Platform, cliquez sur Points de terminaison, puis sur le point de terminaison déployé.
Remarque : Une page de présentation de l'API Quiz doit s'afficher.
  1. Prenez quelques minutes pour examiner les graphiques "Requêtes", "Latence" et "Erreur".
Remarque : Vous devez constater que les graphiques de surveillance vous permettent d'observer les performances de votre API pendant l'exécution des requêtes des clients.

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.