Présentation
Artifact Registry fournit un emplacement unique pour stocker et gérer vos packages et images de conteneurs Docker.
Cloud Build est un service qui exécute vos compilations sur Google Cloud.
Cloud Run est une plate-forme de calcul gérée qui vous permet d'exécuter des conteneurs sur l'infrastructure évolutive de Google.
Google Cloud Observability fournit des services gérés de surveillance, de journalisation et de traçage intégrés pour les applications.
Les bibliothèques clientes Cloud sont la méthode recommandée pour appeler les API Google Cloud à partir de vos applications. Elles utilisent les conventions et le style naturels du langage de programmation que vous utilisez pour votre application. Les bibliothèques clientes Cloud gèrent la communication de bas niveau avec le serveur, y compris l'authentification et la logique de nouvelle tentative.
Les API Google utilisent le protocole OAuth 2.0 pour l'authentification et l'autorisation.
Secret Manager vous permet de stocker des clés API, des mots de passe, des certificats et d'autres données sensibles sous forme de blobs binaires ou de chaînes de texte.
Dans cet atelier, vous allez exécuter une application Python dans Cloud Shell, puis vous la déploierez sur Cloud Run. Vous résoudrez les problèmes qui surviendront au moment du déplacement de l'application vers Cloud Run et vous explorerez les fonctionnalités de développement d'applications de la suite Google Cloud Operations.
Objectifs de l'atelier
Dans cet atelier, vous apprendrez à effectuer les tâches suivantes :
- Conteneuriser et publier une application Web Python dans Artifact Registry
- Déployer une application conteneurisée sur Cloud Run
- Utiliser les journaux pour déboguer les problèmes d'une application
- Ajouter Error Reporting à une application
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Remarque : Lisez ces instructions.
Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique Qwiklabs vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Conditions requises
Pour réaliser cet atelier, vous devez :
- avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- disposer de suffisamment de temps pour effectuer l'atelier en une fois.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.
Remarque : Si vous utilisez un Pixelbook, veuillez exécuter cet atelier dans une fenêtre de navigation privée.
Démarrer votre atelier et vous connecter à la console
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement.
Sur la gauche, vous verrez un panneau contenant les identifiants temporaires à utiliser pour cet atelier.

-
Copiez le nom d'utilisateur, puis cliquez sur Ouvrir la console Google.
L'atelier lance les ressources, puis la page Sélectionner un compte dans un nouvel onglet.
Remarque : Ouvrez les onglets dans des fenêtres distinctes, placées côte à côte.
-
Sur la page "Sélectionner un compte", cliquez sur Utiliser un autre compte. La page de connexion s'affiche.

-
Collez le nom d'utilisateur que vous avez copié dans le panneau "Détails de connexion". Copiez et collez ensuite le mot de passe.
Remarque : Vous devez utiliser les identifiants fournis dans le panneau "Détails de connexion", et non vos identifiants Google Cloud Skills Boost. Si vous possédez un compte Google Cloud, ne vous en servez pas pour cet atelier (vous éviterez ainsi que des frais vous soient facturés).
- Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas aux essais offerts.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche.
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 :
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 : Configurer l'application Python et les ressources nécessaires
Dans cette tâche, vous allez télécharger l'application Python et créer les ressources utilisées par la version actuelle de l'application.
Remarque : La plupart des langages utilisent le retrait pour rendre le code plus lisible. Dans Python, il sert à indiquer un bloc de code. Il doit donc être correct. Le nombre d'espaces utilisés pour le retrait doit être le même partout. Mélanger des espaces et des tabulations peut également entraîner des problèmes. Cet atelier utilise quatre espaces pour la mise en retrait en Python.
Créer la base de données Firestore
-
Pour créer la base de données Firestore, exécutez la commande suivante dans Cloud Shell :
gcloud firestore databases create --location={{{ project_0.default_region | region }}}
La base de données Firestore est utilisée pour stocker les données de livres et de profils utilisateur.
-
Si un message vous invite à autoriser Cloud Shell, cliquez sur Autoriser.
Créer le bucket Cloud Storage avec les autorisations appropriées
-
Pour créer le bucket Cloud Storage, exécutez la commande suivante :
gcloud storage buckets create gs://${GOOGLE_CLOUD_PROJECT}-covers --location={{{ project_0.default_region | region }}} --no-public-access-prevention --uniform-bucket-level-access
Le bucket Cloud Storage est utilisé pour stocker les images des couvertures de livres. Il dispose d'un accès uniforme au niveau du bucket et n'utilise pas la protection contre l'accès public.
Remarque : Si la commande échoue avec un message d'erreur indiquant que les identifiants du compte ne sont pas valides, essayez de la réexécuter. Il se peut que les autorisations du compte participant Qwiklabs ne se soient pas encore propagées.
-
Pour rendre tous les objets du bucket lisibles publiquement, exécutez la commande suivante :
gcloud storage buckets add-iam-policy-binding gs://${GOOGLE_CLOUD_PROJECT}-covers --member=allUsers --role=roles/storage.legacyObjectReader
Créer l'écran de consentement OAuth
Lorsque vous utilisez OAuth 2.0 pour gérer les autorisations, votre application demande un ou plusieurs niveaux d'accès depuis un compte Google. Google affiche un écran de consentement dans lequel l'utilisateur doit accepter le partage de ses données avec l'application.
-
Dans la console Google Cloud, accédez au menu de navigation (
), puis cliquez sur API et services > Écran de consentement OAuth.
-
Cliquez sur Premiers pas.
-
Pour Nom de l'application, saisissez Bookshelf
.
-
Sous Adresse e-mail d'assistance utilisateur, sélectionnez l'adresse e-mail du participant.
-
Cliquez sur Suivant.
-
Dans le champ Cible, sélectionnez Interne, puis cliquez sur Suivant.
Les utilisateurs ayant accès au projet pourront se connecter à l'application.
-
Dans le panneau de gauche des instructions de l'atelier, copiez le nom d'utilisateur.

-
Pour le champ Adresses e-mail, collez le nom d'utilisateur copié, puis cliquez sur Suivant.
-
Cochez la case pour accepter le règlement sur les données utilisateur, puis cliquez sur Continuer.
-
Cliquez sur Créer.
-
Dans le menu de navigation, cliquez sur Branding.
-
Cliquez sur + Ajouter un domaine.
-
Dans la section Domaines autorisés, saisissez cloudshell.dev
pour Domaine autorisé 1.
-
Cliquez sur Enregistrer.
-
Dans le menu de navigation, cliquez sur Accès aux données.
-
Cliquez sur Ajouter ou supprimer des niveaux d'accès.
-
Au début de la liste, cochez la case à côté de openid.
-
Pour Filtrer, saisissez userinfo.profile
, appuyez sur Entrée, puis cochez le niveau d'accès .../auth/userinfo.profile
.
-
Pour Filtrer, désactivez le filtre userinfo.profile, saisissez contacts
, appuyez sur Entrée, puis cochez le niveau d'accès .../auth/contacts
.
-
Cliquez sur Mettre à jour.
Vous devriez voir deux niveaux d'accès non sensibles (openid et userinfo.profile) et un niveau d'accès sensible (contacts).
-
Cliquez sur Enregistrer.
Créer les identifiants OAuth 2.0
-
Dans le menu de navigation, cliquez sur Clients, puis sur + Créer un client.
-
Dans le champ Type d'application, sélectionnez Application Web.
-
Dans le champ Nom, saisissez Bookshelf
.
-
Pour URI de redirection autorisés, cliquez sur + Ajouter un URI.
L'URI spécifié ici sera utilisé lorsque Google redirigera le navigateur vers l'application après que l'utilisateur a donné son consentement.
-
Pour obtenir l'URI de redirection, exécutez la commande suivante dans Cloud Shell :
echo "https://8080-${WEB_HOST}/oauth2callback"
-
Copiez l'URI créé par la commande "echo", puis collez-le dans le champ URI 1.
-
Cliquez sur Créer.
-
Pour l'ID client OAuth 2.0 Bookshelf, dans la colonne Actions, cliquez sur Télécharger le client OAuth (
).
-
Cliquez sur Télécharger au format JSON, puis enregistrez le fichier JSON du code secret du client sur votre machine locale.
Le fichier du code secret du client sera utilisé pour valider votre application auprès de Google.
-
Cliquez sur Fermer.
-
Dans Cloud Shell, cliquez sur Plus (
) dans la barre d'outils en haut à droite, puis sur Importer.
-
Cliquez sur Sélect. fichiers, sélectionnez le fichier JSON du code secret du client, puis cliquez sur Ouvrir.
-
Cliquez sur Importer.
Le fichier JSON du code secret du client est désormais disponible dans le répertoire d'accueil. Le contenu de ce fichier sera utilisé pendant le processus OAuth.
Stocker le fichier JSON du code secret du client dans Secret Manager
Secret Manager est un emplacement sécurisé et recommandé où stocker le fichier JSON du code secret du client.
-
Pour activer l'API Secret Manager, exécutez la commande suivante dans Cloud Shell :
gcloud services enable secretmanager.googleapis.com
-
Pour renommer le fichier du code secret du client, exécutez la commande suivante :
mv ~/client_secret*.json ~/client_secret.json
-
Pour créer le secret, exécutez la commande suivante :
gcloud secrets create bookshelf-client-secrets --data-file=$HOME/client_secret.json
Un secret nommé bookshelf-client-secrets
est désormais accessible depuis votre application.
-
Afin de créer un secret pour la clé secrète Flask, exécutez la commande suivante :
tr -dc A-Za-z0-9 </dev/urandom | head -c 20 | gcloud secrets create flask-secret-key --data-file=-
Cette commande crée un mot de passe alphanumérique aléatoire de 20 caractères, puis le stocke dans un secret nommé flask-secret-key
.
Copier le code Python dans Cloud Shell
-
Pour copier le code Python d'un bucket Cloud Storage dans le répertoire racine, exécutez la commande suivante :
gcloud storage cp -r gs://cloud-training/devapps-foundations/code/lab3/bookshelf ~
-
Pour vérifier le contenu du répertoire "bookshelf", exécutez la commande suivante :
cd ~
ls -R bookshelf
Une liste contenant sept fichiers Python, un fichier d'exigences et six fichiers modèle devrait s'afficher :
bookshelf:
booksdb.py main.py oauth.py profiledb.py requirements.txt secrets.py storage.py templates translate.py
bookshelf/templates:
base.html error.html form.html list.html profile.html view.html
Installer les dépendances requises
-
Pour lister les dépendances dans le fichier d'exigences, exécutez la commande suivante :
cat ~/bookshelf/requirements.txt
Le fichier d'exigences spécifie les dépendances suivantes :
-
Flask : module de framework Web utilisé pour concevoir des applications Web Python
-
Gunicorn : serveur HTTP Python qui s'exécute sur Linux
-
Cloud Logging : produit qui permet de consigner les informations de l'application
-
Firestore : base de données de documents NoSQL sans serveur, entièrement gérée et rapide, conçue pour simplifier le développement d'applications
-
Cloud Storage : solution unifiée de stockage d'objets de Google Cloud
-
Secret Manager : stockage sécurisé pour les données sensibles
-
Assistance Google pour OAuth 2.0 : authentification et autorisation pour les API Google
-
API Cloud Translation : API permettant de détecter la langue d'un texte et de le traduire dans d'autres langues
-
Pour installer les dépendances dans le fichier d'exigences, exécutez la commande suivante :
pip3 install -r ~/bookshelf/requirements.txt --user
pip est le programme d'installation de packages pour Python. La commande pip3
installe les packages spécifiés dans le fichier requirements.txt pour une utilisation avec Python 3.
Tester l'application
-
Pour démarrer le serveur HTTP, exécutez la commande suivante :
cd ~/bookshelf; EXTERNAL_HOST_URL="https://8080-${WEB_HOST}" ~/.local/bin/gunicorn -b :8080 main:app
Une variable d'environnement est transmise à l'application :
-
EXTERNAL_HOST_URL
spécifie le schéma et le nom d'hôte à utiliser dans l'URL de rappel.
L'application est désormais hébergée sur le port 8080.
-
Pour exécuter l'application dans le navigateur Web, cliquez sur Aperçu sur le Web, puis sélectionnez Prévisualiser sur le port 8080.

Un nouvel onglet s'ouvre dans le navigateur et l'application s'exécute. Cette page affiche la liste de tous les livres existants. Aucun livre n'est disponible pour l'instant.
Remarque : Si un message vous invite à autoriser Cloud Shell, cliquez sur Autoriser.
-
Effectuez un clic droit sur l'image de couverture du livre Wizard of Oz (le Magicien d'Oz), puis enregistrez-la sur votre ordinateur sous le nom oz.png
:

-
Cliquez sur + Ajouter un livre.
Comme vous devez être connecté pour ajouter un livre, vous devez choisir un compte pour vous connecter avec Google :

-
Cliquez sur l'adresse e-mail du participant, puis sur Continuer.
-
Cliquez sur Autoriser.
-
Saisissez les informations suivantes dans le formulaire :
Champ |
Valeur |
Titre |
Wonderful Wizard of Oz |
Auteur |
Frank L. Baum |
Date de publication |
1900 |
Description |
There's no place like home! |
-
Pour Image de couverture, cliquez sur Sélectionner un fichier.
-
Sélectionnez le fichier que vous avez téléchargé (oz.png), puis cliquez sur Ouvrir.
-
Cliquez sur Enregistrer.
Vous revenez à la page de visualisation, qui contient les détails de votre livre. Les détails du livre sont stockés dans la base de données Firestore et l'image de couverture est stockée dans Cloud Storage.
-
Cliquez sur l'adresse e-mail.
Le profil s'affiche. La sélection de la langue doit afficher English
.
-
Définissez la langue préférée sur Espagnol, puis cliquez sur Enregistrer.
-
Cliquez sur le livre Le Magicien d'Oz.
La page de visualisation contient désormais à la fois la description anglaise d'origine et la traduction en espagnol.
-
Dans Cloud Shell, pour quitter l'application, appuyez sur Ctrl+C
.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Configurer l'application Python et les ressources nécessaires
Tâche 2 : Conteneuriser et publier l'application dans Artifact Registry
Dans cette tâche, vous allez utiliser Cloud Build pour conteneuriser l'application et la publier dans Artifact Registry.
Créer le dépôt
-
Pour créer le dépôt Artifact Registry, exécutez la commande suivante dans Cloud Shell :
gcloud artifacts repositories create app-repo \
--repository-format=docker \
--location={{{ project_0.default_region | region }}}
Le dépôt contiendra le conteneur de notre application.
-
Pour afficher les détails du dépôt, exécutez la commande suivante :
gcloud artifacts repositories describe app-repo \
--location={{{ project_0.default_region | region }}}
Compiler, conteneuriser et publier l'application
Vous pouvez créer votre propre Dockerfile pour empaqueter votre application dans une image Docker, mais Cloud Build peut utiliser des buildpacks pour créer le conteneur à votre place.
-
Pour compiler l'application à l'aide de Cloud Build, exécutez la commande suivante :
gcloud builds submit \
--pack image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
~/bookshelf
La commande compile l'image Docker du code dans le répertoire ~/bookshelf
et la stocke dans le dépôt app-repo d'Artifact Registry.
-
Pour afficher la liste des builds, exécutez la commande suivante :
gcloud builds list
Le build bookshelf est listé.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Conteneuriser et publier l'application dans Artifact Registry
Tâche 3 : Déployer l'application sur Cloud Run et la tester
Dans cette tâche, vous allez déployer l'application sur Cloud Run, où vous la testerez ensuite.
Déployer l'application sur Cloud Run
-
Pour déployer l'application sur Cloud Run, exécutez la commande suivante :
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT}
Remarque : La variable d'environnement EXTERNAL_HOST_URL n'est plus nécessaire.
-
Si un message vous invite à activer des API, saisissez y
.
Cette commande déploie l'image que nous venons de créer dans Cloud Run. Nous spécifions que les appels non authentifiés sont autorisés, car les utilisateurs n'ont besoin de se connecter que lorsqu'ils souhaitent créer, modifier ou supprimer des livres. La variable d'environnement GOOGLE_CLOUD_PROJECT
est fournie à l'application, car elle n'est pas disponible dans Cloud Run par défaut.
Cloud Run déploie l'application.
Remarque : Si une erreur s'affiche indiquant que run.googleapis.com n'est pas accessible, il est possible que l'activation de l'API ne se soit pas encore propagée à Cloud Run. Relancez la commande Cloud Run jusqu'à ce qu'elle fonctionne.
-
Pour obtenir l'URL de l'application, exécutez la commande suivante :
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
-
Cliquez sur le lien créé par la commande précédente.
Un nouvel onglet s'ouvre et affiche le message "Service indisponible" (ou une autre erreur).
L'application ne s'exécute pas correctement : nous devons comprendre pourquoi.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer l'application sur Cloud Run
Tâche 4 : Identifier le problème et corriger l'application
Dans cette tâche, vous allez utiliser les journaux pour résoudre le problème.
Rechercher le problème à l'aide des journaux
Lorsque vous rencontrez un problème avec votre application, les journaux Cloud Logging peuvent souvent vous aider à le résoudre.
-
Dans la console Google Cloud, ouvrez le menu de navigation (
), puis sélectionnez Cloud Run.
-
Cliquez sur bookshelf, puis sur l'onglet Journaux.
Les journaux sont propres à l'application Bookshelf sur Cloud Run. Si vous examinez les journaux, vous devriez voir une erreur permission denied
pour secretmanager.versions.access
.
Lorsque l'application s'exécute dans Cloud Shell, elle utilise les identifiants de l'utilisateur connecté. Le participant peut accéder aux éléments de Secret Manager, écrire des fichiers dans Cloud Storage et appeler l'API Translation.
À moins que vous ne fournissiez un compte de service, les applications Cloud Run utilisent le compte de service Compute Engine par défaut. Ce compte de service par défaut ne dispose pas de ces autorisations.
Il est recommandé de créer un compte de service propre à votre application, de l'associer à celle-ci, puis de lui attribuer les autorisations appropriées.
Créer le compte de service et redéployer l'application
-
Afin de créer un compte de service pour l'application, exécutez la commande suivante dans Cloud Shell :
gcloud iam service-accounts create bookshelf-run-sa
Vous n'avez pas encore ajouté d'autorisations. Pour déterminer le rôle approprié à ajouter, vous pouvez consulter la documentation de référence sur les rôles IAM de base et prédéfinis. Les rôles Secret Manager incluent le rôle Accesseur de secrets Secret Manager, qui doit fournir les autorisations minimales pour accéder aux secrets.
Remarque : Vous pouvez utiliser un processus itératif pour déterminer les autorisations à ajouter jusqu'à ce que l'application s'exécute correctement. Pour cet atelier, vous allez accorder les autorisations requises au compte de service sans suivre cette procédure.
-
Pour ajouter les rôles requis, exécutez les commandes suivantes :
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/cloudtranslate.user"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/datastore.user"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/storage.objectUser"
Ces autorisations concernent Secret Manager, l'API Cloud Translation, Firestore et Cloud Storage.
L'application en cours d'exécution ne détectera pas immédiatement les autorisations. Il lui faudra quelques minutes pour le faire. Afin d'éviter ce délai, vous pouvez redéployer l'application.
-
Pour redéployer l'application avec un compte de service, exécutez la commande suivante :
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
-
Pour ouvrir l'application, exécutez la commande suivante, puis cliquez sur le lien :
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
Un message d'erreur peut s'afficher. Cette erreur se produit, car les autorisations du compte de service ne se sont peut-être pas encore propagées.
Si vous consultez les journaux Bookshelf du service Cloud Run, vous devriez voir une erreur Autorisations manquantes ou insuffisantes. L'application échouera tant que les autorisations ne seront pas propagées et que le compte de service ne pourra pas appeler les services Google Cloud requis.
-
Jusqu'à ce que l'application s'ouvre correctement, fermez l'onglet de l'application et cliquez à nouveau sur l'URL générée.
Une fois les autorisations propagées, la page Livres s'affiche.
Tester et corriger OAuth
-
Dans l'application, cliquez sur Connexion.
La connexion échoue.
Le message d'erreur indique que l'accès est bloqué, que l'application a envoyé une requête non valide et que l'erreur est due à une incohérence de l'URI de redirection. Cette erreur survient, car la configuration OAuth n'est définie que pour s'exécuter dans cloudshell.dev
, et non dans l'URL du service Cloud Run.
-
Dans la console Google Cloud, accédez au menu de navigation (
), puis cliquez sur API et services > Écran de consentement OAuth et Branding.
-
Cliquez sur + Ajouter un domaine.
-
Dans Cloud Shell, exécutez la commande suivante :
echo "bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
La commande génère l'URL de l'application sans le préfixe https://
.
-
Copiez le nom de domaine dans le presse-papiers, puis collez-le dans Domaine autorisé 2.
-
Cliquez sur Enregistrer.
-
Dans le menu de navigation, sélectionnez Clients.
-
Sous ID client OAuth 2.0, cliquez sur Bookshelf.
-
Pour URI de redirection autorisés, cliquez sur + Ajouter un URI.
-
Pour obtenir l'URI de redirection, exécutez la commande suivante dans Cloud Shell :
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app/oauth2callback"
-
Copiez l'URI créé par la commande "echo", puis collez-le dans le champ URI 2.
-
Cliquez sur Enregistrer.
Le fichier JSON du client OAuth a changé. Nous devons donc l'enregistrer à nouveau en tant que secret.
-
Pour l'ID client OAuth 2.0 Bookshelf, dans la colonne Actions, cliquez sur Télécharger le client OAuth (
).
-
Cliquez sur Télécharger au format JSON, puis enregistrez le fichier JSON du code secret du client mis à jour sur votre machine locale.
-
Cliquez sur Fermer.
-
Dans Cloud Shell, cliquez sur Plus (
) dans la barre d'outils en haut à droite, puis sur Importer.
-
Cliquez sur Sélect. fichiers, sélectionnez le fichier JSON du code secret du client mis à jour, puis cliquez sur Ouvrir.
-
Cliquez sur Importer.
Le fichier JSON du code secret du client mis à jour est désormais disponible dans le répertoire d'accueil.
-
Pour remplacer le fichier du code secret du client, exécutez les commandes suivantes dans Cloud Shell :
rm ~/client_secret.json
mv ~/client_secret*.json ~/client_secret.json
-
Pour ajouter une version mise à jour du secret, exécutez la commande suivante :
gcloud secrets versions add bookshelf-client-secrets --data-file=$HOME/client_secret.json
Le dernier secret est désormais correct. Le secret n'est chargé qu'une seule fois pour l'application. Vous devez donc la redéployer.
-
Pour effectuer le redéploiement, exécutez la commande suivante :
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
-
Une fois l'application déployée, exécutez la commande suivante, puis cliquez sur l'URL générée :
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
L'application est opérationnelle.
-
Dans l'application, cliquez sur Connexion, puis connectez l'utilisateur en lui demandant de donner son consentement.
L'adresse e-mail est désormais un lien.
-
Cliquez dessus.
La langue préférée reste l'espagnol.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Corriger l'application
Tâche 5 : Découvrir les fonctionnalités de Google Cloud Observability
Dans cette tâche, vous allez découvrir certaines fonctionnalités de Google Cloud Observability que vous pouvez utiliser pour surveiller l'état de votre application.
Ajouter Error Reporting à l'application
Error Reporting regroupe les erreurs dans vos services cloud en cours d'exécution.
-
Pour ajouter le rôle requis au compte de service, exécutez la commande suivante dans Cloud Shell :
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/errorreporting.writer"
-
Dans Cloud Shell, ouvrez le fichier ~/bookshelf/requirements.txt
dans un éditeur de fichiers.
-
Ajoutez la ligne suivante :
google-cloud-error-reporting==1.9.2
Le fichier requirements.txt devrait maintenant se présenter comme suit :
Flask==2.3.3
gunicorn==23.0.0
google-cloud-logging==3.6.0
google-cloud-firestore==2.12.0
google-cloud-storage==2.10.0
google-cloud-secret-manager==2.16.4
google-api-python-client==2.101.0
google-auth==2.23.1
google-auth-oauthlib==1.1.0
google-cloud-translate==3.12.0
google-cloud-error-reporting==1.9.2
-
Enregistrez le fichier.
-
Pour installer les dépendances mises à jour, exécutez la commande suivante :
pip3 install -r ~/bookshelf/requirements.txt --user
-
Dans un éditeur de fichiers, ouvrez le fichier ~/bookshelf/main.py
.
-
Sur la ligne après l'instruction d'importation cloud_logging
, ajoutez le code suivant :
from google.cloud import error_reporting
-
Après le point de terminaison /profile
, ajoutez le code suivant :
@app.route('/raiseerror')
def raise_error():
"""
Manually raise an error.
"""
log_request(request)
print('raise_error()')
error_client = error_reporting.Client()
error_message = 'Intentionally Created Error'
error_client.report(
message=error_message,
http_context=error_reporting.build_flask_context(request),
)
session['error_message'] = f"{error_message}"
return redirect(url_for('.error'))
L'appel du point de terminaison /raiseerror
effectue une simulation en envoyant une erreur à Error Reporting et en redirigeant vers la page d'erreur.
-
Enregistrez le fichier.
-
Pour compiler et redéployer l'application, exécutez les commandes suivantes :
gcloud builds submit \
--pack image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
~/bookshelf
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
-
Une fois l'application déployée, exécutez la commande suivante, puis cliquez sur l'URL générée :
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
-
Ajoutez /raiseerror
à la fin de l'URL, puis cliquez sur Enter
.
Vous êtes redirigé vers la page d'erreur de l'application, avec l'erreur Intentionally Created Error
.
-
Remplacez error
par raiseerror
dans l'URL, puis cliquez sur Enter
.
Vous êtes à nouveau redirigé vers la page d'erreur de l'application. Vous examinerez ces erreurs lors d'une prochaine étape.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Ajouter Error Reporting à l'application
Explorer la page d'informations du service Cloud Run
La page d'informations du service Cloud Run contient des tableaux de bord intégrés qui vous aideront à gérer votre service.
-
Dans la console Google Cloud, ouvrez le menu de navigation (
), puis sélectionnez Cloud Run.
-
Cliquez sur bookshelf.
L'onglet Métriques s'affiche.
-
Cliquez sur Journée précédente, puis sélectionnez Dernière heure.
L'onglet "Métriques" affiche une liste des appels de service qui ont eu lieu au cours de l'heure précédente, ainsi que des graphiques des métriques collectées automatiquement.
-
Cliquez sur l'onglet Journaux.
Vous pouvez explorer tous les journaux du service Cloud Run dans cet onglet.
Explorer Cloud Logging
-
Dans le champ Recherche de la barre de titre de la console Google Cloud, saisissez Journalisation, cliquez sur Rechercher, puis sur Journalisation.
Vous pouvez accéder à tous les journaux depuis cette page.
-
Pour Type de ressource, cliquez sur Révision Cloud Run.
Tous les journaux Cloud Run s'affichent ici. Vous pouvez filtrer les résultats par nom de service ou nom de révision.
-
Dans Gravité, cliquez sur Erreur.
Les erreurs qui sont survenues dans l'application s'affichent ici. Si vous aviez davantage d'applications utilisant plus de services, il serait difficile de distinguer les différentes sources d'erreurs dans cette vue.
Explorer Error Reporting
-
Dans le champ Recherche de la barre de titre de la console Google Cloud, saisissez Error Reporting, cliquez sur Rechercher, puis sur Error Reporting.
Les erreurs sont regroupées sur cette page. La plupart des erreurs ont été créées automatiquement lors du plantage de l'application Python dans Cloud Run. L'erreur générée manuellement est également affichée.
-
Cliquez sur 1 heure.
-
Cliquez sur Intentionally Created Error (Erreur intentionnelle).
Les erreurs similaires sont regroupées ici. Le regroupement des erreurs peut vous aider à déboguer les problèmes.
-
Sur l'un des échantillons, cliquez sur Afficher les journaux.
Ce lien vous permet de revenir à Cloud Logging et d'accéder à cette entrée de journal. Vous pouvez épingler une erreur consignée et explorer les journaux qui ont été enregistrés à peu près au même moment.
Remarque : Dans une application réelle, essayez de consigner toutes les erreurs et les informations qui pourraient vous aider à identifier les problèmes rencontrés.
Félicitations !
Vous avez réussi à conteneuriser et à déployer une application sur Cloud Run, et à déboguer les problèmes qui sont survenus. Vous avez également attribué les rôles requis au compte de service et mis à jour la configuration OAuth pour prendre en charge le déploiement local et le déploiement Cloud Run. Enfin, vous avez ajouté Error Reporting à l'application, puis exploré les fonctionnalités de développement d'applications de Google Cloud Observability.
Étapes suivantes et informations supplémentaires
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 2025 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.