Dans cet atelier, vous allez améliorer l'application Quiz en ligne en créant une fonction Cloud qui traite les messages Cloud Pub/Sub.
Ce processus exploite plusieurs produits GCP dans un environnement sans serveur : Cloud Pub/Sub, l'API Cloud Natural Language et Cloud Spanner.
Objectifs
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
Créer une fonction Cloud qui répond aux messages Cloud Pub/Sub
Déployer plusieurs fichiers dans une fonction Cloud
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.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
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.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
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.
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.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
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 :
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 :
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
Pour cloner le dépôt du cours, saisissez la commande suivante :
Configurer et exécuter l'application de l'étude de cas
Pour modifier le répertoire de travail, saisissez la commande suivante :
cd ~/cloudfunctions/start
Pour remplacer la région par défaut d'un fichier par celle qui a été attribuée à l'atelier, vous pouvez utiliser 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
Pour configurer l'application Quiz, saisissez la commande suivante :
. prepare_environment.sh
Remarque – Ce fichier de script :
crée une application App Engine ;
exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;
exécute la commande npm install ;
crée des entités dans Cloud Datastore ;
crée un sujet Cloud Pub/Sub ;
crée une instance, une base de données et une table Cloud Spanner ;
affiche l'ID du projet Google Cloud.
Pour exécuter l'application Web, saisissez la commande suivante :
npm start
Cliquez sur Vérifier ma progression pour valider l'objectif.
Configurer et exécuter l'application de l'étude de cas
Tâche 2 : Utiliser Cloud Functions
Dans cette section, vous allez créer une fonction Cloud dans votre projet Google Cloud, qui se déclenche lorsqu'un message est publié dans Cloud Pub/Sub, exécute l'application et surveille l'appel de la fonction Cloud.
Créer une fonction Cloud
Pour accéder aux fonctions Cloud Run, accédez au menu de navigation (), puis cliquez sur Cloud Run.
Cliquez sur Écrire une fonction.
Dans le champ Nom du service, saisissez process-feedback.
Dans la liste Région, sélectionnez la région .
Cliquez sur + Ajouter un déclencheur, puis sélectionnez Déclencheur Pub/Sub dans la liste déroulante.
Si nécessaire, cliquez sur Activer pour activer les API requises.
Dans la fenêtre Déclencheur Pub/Sub, spécifiez les éléments suivants :
Propriété
Valeur
Type de déclencheur
Sources Google
Fournisseur d'événements
Cloud Pub/Sub
Type d'événement
google.cloud.pubsub.topic.v1.messagePublished
Sujet Cloud Pub/Sub
projects/PROJECT_ID/topics/feedback
Région
Si vous êtes informé que Pub/Sub a besoin que le rôle roles/iam.serviceAccountTokenCreator soit accordé au compte de service Pub/Sub, cliquez sur Accorder.
Cliquez sur Enregistrer le déclencheur.
Cliquez sur Créer.
Examinez l'implémentation de la fonction fournie.
Remarque : La création de la fonction Cloud peut prendre une ou deux minutes.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer une fonction Cloud
Exécuter l'application Web
Retournez dans la fenêtre Cloud Shell.
Pour prévisualiser l'application Web, cliquez sur le bouton "Aperçu sur le Web, puis sélectionnez Prévisualiser sur le port 8080.
Cliquez sur Take Test (Faire le test).
Cliquez sur Places (Lieux).
Répondez à la question.
Évaluez le questionnaire, saisissez des commentaires, puis cliquez sur Envoyer des commentaires.
Afficher le graphique de surveillance et les journaux de la fonction Cloud
Revenez sur la page Cloud Run de la console Cloud Platform.
Cliquez sur process-feedback.
Remarque : Un graphique de surveillance doit s'afficher pour les appels de la fonction Cloud.
L'affichage de l'appel de votre fonction par le graphique prend quelques minutes.
Cliquez sur l'onglet Journaux pour consulter vos journaux.
Vous pouvez afficher vos journaux dans l'explorateur de journaux en cliquant sur le lien en haut à droite de la page.
Si votre message Cloud Pub/Sub ne s'affiche pas, cliquez sur Actualiser.
Remarque : Vous devez voir les entrées de journal collectées à partir de la fonction Cloud.
L'affichage de l'appel de votre fonction par les journaux prend quelques minutes.
Accédez à Cloud Shell pour afficher vos commentaires.
Tâche 3 : Examiner le code de l'application de l'étude de cas
Dans cette section, vous allez examiner le code de l'application de l'étude de cas à l'aide de l'éditeur de texte Cloud Shell.
Lancer l'éditeur de texte Cloud Shell
Dans la console Cloud Platform, cliquez sur Ouvrir l'éditeur.
Examiner la structure du code de l'application Cloud Functions
Accédez à cloudfunctions/start.
Sélectionnez le fichier index.js dans le dossier ...function.
Remarque : Ce fichier contient le même code que celui de l'exemple de la fenêtre Cloud Functions dans la console Cloud, à une différence près : étant donné que la fonction que vous écrirez renverra une promesse, l'argument de rappel a été omis.
Sélectionnez le fichier package.json.
Remarque : Ce fichier contient la liste des dépendances que cette fonction doit exécuter.
Cloud Functions installe automatiquement les dépendances.
Sélectionnez le fichier languageapi.js.
Remarque : Ce fichier contient du code permettant de traiter le texte des commentaires et de renvoyer le score des sentiments de l'API Natural Language ML.
Sélectionnez le fichier spanner.js.
Remarque : Ce fichier contient le code permettant d'insérer un enregistrement dans une base de données Cloud Spanner.
Tâche 4 : Coder une fonction Cloud
Dans cette section, vous allez écrire le code permettant de créer une fonction Cloud qui récupère les données d'un message Cloud Pub/Sub, appelle l'API Natural Language ML pour détecter les sentiments et insère un enregistrement dans Cloud Spanner.
Remarque : Modifiez le code dans les sections marquées comme suit :
// TODO // END TODO
Pour parfaire votre apprentissage, examinez le code, les commentaires intégrés et la documentation sur les API concernées.
Écrire le code permettant de modifier une fonction Cloud
Revenez au fichier ...function/index.js.
Chargez les modules languageapi et spanner. Ces modules se trouvent dans le même dossier que le fichier index.js.
Dans la méthode subscribe(), après le code existant permettant de charger le message Cloud Pub/Sub dans un tampon, convertissez le message Pub/Sub en objet de commentaires en l'analysant en tant que données JSON.
Renvoyez une promesse qui appelle la méthode analyze du module languageapi pour analyser le texte des commentaires.
Ajoutez une méthode .then(...) à la fin de l'instruction return.
Indiquez une fonction fléchée en tant que valeur du rappel.
Dans le corps de la fonction fléchée, enregistrez le score des sentiments de l'API Natural Language dans la console.
Ajoutez une propriété nommée "score" à l'objet "feedback".
Complétez le corps de la fonction fléchée en renvoyant l'objet "feedback".
Ajoutez une deuxième méthode .then(...) à la fin de la première. Celle-ci utilise le module spanner pour enregistrer les commentaires.
Ajoutez une troisième méthode enchaînée .then(...) avec une fonction fléchée sans argument et un corps vide comme valeur du rappel.
Dans le corps de ce rappel, enregistrez un message pour indiquer que les commentaires ont été enregistrés et renvoyer un message de réussite.
Associez un gestionnaire .catch(...) à la fin de la chaîne pour consigner le message d'erreur dans la console.
Remarque : Une fois terminée, votre fonction doit se présenter comme suit.
function/index.js
// TODO: Load the ./languageapi module
const languageAPI = require('./languageapi');
// END TODO
// TODO: Load the ./spanner module
const feedbackStorage = require('./spanner');
// END TODO
exports.subscribe = function subscribe(event) {
// The Cloud Pub/Sub Message object.
// TODO: Decode the Cloud Pub/Sub message
// extracting the feedbackObject data
// The message received from Pub/Sub is base64 encoded, and
// the data submitted by students is in a data property
const pubsubMessage = Buffer.from(event.data, 'base64').toString();
let feedbackObject = JSON.parse(pubsubMessage);
console.log('Feedback object data before Language API:' + JSON.stringify(feedbackObject));
// END TODO
// TODO: Run Natural Language API sentiment analysis
// The analyze(...) method expects to be passed the
// feedback text from the feedbackObject as an argument,
// and returns a Promise.
return languageAPI.analyze(feedbackObject.feedback).then(score => {
// TODO: Log the sentiment score
console.log(`Score: ${score}`);
// END TODO
// TODO: Add new score property to feedbackObject
feedbackObject.score = score;
// END TODO
// TODO: Pass feedback object to the next handler
return feedbackObject;
// END TODO
})
// TODO: insert record
.then(feedbackStorage.saveFeedback).then(() => {
// TODO: Log and return success
console.log('feedback saved...');
return 'success';
// END TODO
})
// END TODO
// TODO: Catch and Log error
.catch(console.error);
// End TODO
};
Enregistrez le fichier.
Empaqueter et déployer le code de la fonction Cloud
Revenez à Cloud Shell, puis arrêtez l'application Web en appuyant sur Ctrl+C.
Pour modifier le répertoire de travail dans le code de la fonction Cloud, saisissez la commande suivante :
cd function
Pour compresser les fichiers nécessaires au déploiement de la fonction, saisissez la commande suivante :
zip cf.zip *.js*
Remarque : Vous générez ainsi une archive ZIP nommée cf.zip qui inclut tous les fichiers JavaScript et JSON du dossier.
Pour placer le fichier ZIP dans Cloud Storage, saisissez la commande suivante :
gcloud storage cp cf.zip gs://$GCLOUD_BUCKET/
Remarque : Cette commande copie l'archive ZIP dans le bucket Cloud Storage dont le nom contient votre ID de projet et le suffixe -media.
Pour déployer la fonction à partir du bucket Cloud Storage, vous pouvez utiliser la commande gcloud functions deploy comme suit :
gcloud functions deploy process-feedback1 \
--gen2 \
--region={{{project_0.default_region|set at lab start}}} \
--source=gs://$GCLOUD_BUCKET/cf.zip \
--entry-point=subscribe \
--runtime=nodejs22 \
--trigger-topic=feedback
Remarque : La mise à jour de la fonction process-feedback1 avec le nouveau code qui effectue une analyse des sentiments à l'aide de l'API Cloud Natural Language Machine Learning et insère les données dans Cloud Spanner peut prendre une ou deux minutes.
Empaqueter et déployer le code de la fonction Cloud
Tâche 5 : Tester l'application de l'étude de cas
Exécuter l'application Web
Retournez dans la fenêtre Cloud Shell.
Revenez au dossier de travail start de l'atelier cloudfunctions :
cd ..
Pour lancer l'application Web, exécutez la commande suivante :
npm start
Prévisualisez l'application Web.
Cliquez sur Take Test (Faire le test).
Cliquez sur Places (Lieux).
Répondez à la question.
Saisissez vos commentaires, puis cliquez sur Envoyer des commentaires.
Afficher le graphique de surveillance et les journaux de la fonction Cloud
Revenez à la section Cloud Run de la console Cloud Platform.
Cliquez sur le nom de la fonction process-feedback1.
Remarque : Un graphique de surveillance doit s'afficher pour les appels de la fonction Cloud.
L'affichage de l'appel de votre fonction par le graphique prend quelques minutes.
Cliquez sur l'onglet Journaux pour consulter vos journaux.
Vous pouvez afficher vos journaux dans l'explorateur de journaux en cliquant sur le lien en haut à droite de la page.
Si votre message Cloud Pub/Sub ne s'affiche pas, cliquez sur Actualiser.
Actualisez les journaux à quelques minutes d'intervalle jusqu'à ce que les entrées indiquent que votre fonction a été exécutée.
Remarque : Vous devez voir les entrées de journal collectées à partir de la fonction Cloud.
Le score de l'API Language doit également figurer dans les journaux.
L'affichage de l'appel de votre fonction par les journaux peut prendre quelques minutes.
Afficher les données Cloud Spanner
Dans le menu de navigation, cliquez sur Afficher tous les produits, puis sur Spanner.
Cliquez sur Quiz instance (Instance de quiz). Sous Bases de données, cliquez sur quiz-database, puis dans le panneau de gauche, sélectionnez Spanner Studio.
Exécutez la requête suivante :
SELECT * FROM Feedback
Remarque : Vous devez constater qu'un enregistrement a été ajouté à la table des commentaires.
Tâche 6 : Bonus : Stocker les réponses des participants à l'aide d'une fonction Cloud
Lorsqu'un participant répond à un quiz, ses réponses sont envoyées dans un appel d'API au serveur. Votre tâche consiste à capturer les réponses envoyées par les participants, ainsi que les bonnes réponses, et à les enregistrer dans Cloud Spanner. Vous devez constater qu'un enregistrement a été ajouté à la table des commentaires.
Procédez comme suit :
Créez un sujet Cloud Pub/Sub nommé "answers".
Créer une table Cloud Spanner appelée "Answers", dotée des noms de colonnes et des types de données appropriés
Publier les réponses dans le sujet des réponses
Abonnez-vous au sujet "answers" dans l'application de la console et insérez les réponses dans la table "Answers".
Les informations dépendent entièrement de vous. Vous trouverez la solution à la section bonus dans le dossier bonus de l'atelier.
Récapitulatif :
Quels déclencheurs peuvent être utilisés avec Cloud Functions ?
Cloud Pub/Sub
Cloud Spanner
Cloud Storage
HTTP
Si une fonction Cloud est déclenchée par Cloud Pub/Sub, comment le message est-il diffusé ?
Encodage en base64
Encodage en CSV
Compression TAR et GZIP
Compression ZIP
Quel est le temps d'exécution maximal d'une fonction Cloud ?
60 secondes
540 secondes
Illimité
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 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
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.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
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.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
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.
Dans cet atelier, vous allez améliorer l'application Quiz en ligne en créant une fonction Cloud qui traite les messages Cloud Pub/Sub.
Durée :
0 min de configuration
·
Accessible pendant 120 min
·
Terminé après 120 min