1. Introduction
Dans cet atelier, vous allez utiliser Gemini, un collaborateur optimisé par l'IA disponible dans Google Cloud, pour résoudre un problème lié au déploiement de Cloud Functions. Pour cela, vous allez analyser les journaux d'erreurs, identifier l'origine du problème et trouver des solutions.
Ce que vous allez effectuer...
- Vous utiliserez le terminal Cloud Shell et la gcloud CLI pour configurer l'environnement, y compris pour activer les API Google pertinentes et créer une fonction Cloud à partir du code fourni
- Vous utiliserez la synthèse des journaux Cloud Logging pour générer des résumés de journaux afin de comprendre les informations capturées.
- Vous discuterez avec Gemini pour qu'il vous aide à dépanner et résoudre le problème.
Ce que vous allez apprendre...
- Utiliser Gemini avec l'observabilité Google Cloud et résoudre des problèmes
- Rechercher et comprendre les journaux Cloud Functions avec l'aide de Gemini
Ce dont vous avez besoin...
- Navigateur Web Chrome
- Un projet Google Cloud avec facturation activée
- Un compte Google disposant d'autorisations d'accès au projet, vous permettant d'activer des API et de manipuler des ressources
Cet atelier s'adresse aux ingénieurs en DevOps et aux plates-formes, ainsi qu'aux développeurs logiciels de tous niveaux, y compris les débutants. Notre objectif sera d'acquérir une expérience pratique avec les capacités de Gemini dans le dépannage.
2. Préparation
Cette section décrit tout ce que vous devez faire pour commencer cet atelier.
Configurer l'environnement
1. Connectez-vous à la console Cloud en accédant à https://console.cloud.google.com.
2. Sélectionnez un projet Google Cloud avec lequel vous prévoyez de travailler pour cet atelier.
3. Ouvrez la page Cloud Functions dans la console. Pour ce faire, sélectionnez Cloud Functions dans le menu de navigation (l'icône en haut à gauche ▾ dans la fenêtre de la console).
Vous pouvez aussi rechercher "Cloud Functions" dans la zone de recherche de la console:
Cliquez sur le bouton "Créer une fonction" en haut de la liste des fonctions .
Si vous n'avez jamais utilisé Cloud Functions dans ce projet auparavant, vous serez invité à activer les API Google.
Cliquez sur ACTIVER pour continuer.
4. Définir les propriétés de base de la nouvelle fonction Cloud
- Définissez le nom sur "
codelab-cf
". - Sélectionnez l'option Allow unauthenticated invocations (Autoriser les appels non authentifiés).
Pour terminer cette étape, cliquez sur le bouton NEXT (SUIVANT) en bas à gauche de la fenêtre:
Après avoir cliqué sur SUIVANT, vous serez peut-être invité à activer d'autres API Google. Comme pour l'étape 4, cliquez sur ACTIVER.
Configurer l'environnement d'exécution et le code de la fonction Cloud
Cet atelier de programmation utilise Python comme langage de programmation. Ne vous inquiétez pas si vous ne connaissez pas Python. Pour cet atelier de programmation, vous n'avez pas besoin de connaître Python.
5. Sélectionnez Python 3.11 comme environnement d'exécution de la fonction
Notez que la modification de l'environnement d'exécution modifie le code source affiché dans l'éditeur intégré.
6. Copiez le code ci-dessous dans l'éditeur intégré pour modifier l'exemple de démarrage rapide généré automatiquement.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
Ce code lit l'attribut path
de la requête GET, analyse le chemin d'accès pour récupérer le nom du bucket et appelle l'API Google Cloud Storage pour obtenir la liste des objets stockés à ce chemin. La fonction (get_object_list
) accepte une requête qui est un objet Flask en tant qu'argument d'entrée et renvoie les noms des objets sous forme de tableau JSON.
7. Sélectionnez le fichier requirements.txt
dans la liste des fichiers restants dans l'éditeur intégré. Remplacez la liste actuelle des dépendances par la nouvelle en copiant le code ci-dessous dans l'éditeur intégré.
google-cloud-storage
8. Pour déployer la fonction Cloud, cliquez sur "DÉPLOYER" en bas à gauche.
Le processus de déploiement peut prendre quelques minutes. Si vous avez suivi scrupuleusement les instructions de configuration, attendez-vous à voir le déploiement comme ayant échoué.
3. Identifier et résoudre le problème
Dans cette section, vous allez utiliser la fonctionnalité Explications des journaux et d'autres services d'assistance de Gemini pour identifier le problème et le résoudre.
1. Le déploiement échoue. Un message d'erreur contenant des informations supplémentaires et une option permettant d'afficher les journaux de déploiement doivent s'afficher. Cliquez sur AFFICHER LES JOURNAUX pour afficher les journaux du déploiement.
REMARQUE : les journaux de déploiement seront ouverts dans un onglet séparé du même navigateur. Vous devrez naviguer entre les onglets pour terminer cet atelier de programmation.
REMARQUE : il est possible qu'aucune ligne de journal ne s'affiche lorsque vous cliquez sur AFFICHER LES JOURNAUX, ou que quelques lignes ne s'affichent pas. Dans ce cas, utilisez le sélecteur de période dans le volet de requête de l'explorateur de journaux et sélectionnez 30 dernières minutes.
2. Examinez les journaux dans l'onglet ouvert. Notez que les résumés des journaux se présentent sous la forme de plusieurs lignes de la pile d'appel de l'exception. En effet, la fonction Cloud capture le texte imprimé dans stdout
ou stderr
et écrit chaque ligne dans une entrée de journal distincte. D'autres lignes de journal résument les informations sur le code d'erreur de sortie, ainsi que les informations supplémentaires rapportées par Cloud Functions et les API Cloud Run.
Vous pouvez cliquer sur n'importe quelle ligne pour afficher plus d'informations sur un journal particulier. Les journaux développés comportent des éléments d'interface utilisateur supplémentaires qui vous permettent de copier toutes les informations du journal, de développer tous les champs pour afficher toutes les données de l'entrée de journal et d'expliquer l'entrée de journal à l'aide de Gemini.
4. La pile d'appels des exceptions n'est pas très informative. Parcourez les journaux pour trouver la fin du journal de trace de la pile de l'exception. Il s'agit de la ligne "Container called exit(1)
". Le résumé du journal suivant indique:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Cela semble être un bon candidat pour une enquête. Cliquez sur cette ligne pour développer l'entrée de journal. Cliquez ensuite sur Expliquer cette entrée de journal. pour afficher des informations supplémentaires sur le journal sélectionné.
Si Gemini n'a pas été utilisé auparavant dans ce projet, vous serez invité à activer une API requise. Si vous êtes invité à activer l'API, cliquez sur ACTIVER pour continuer.
REMARQUE : Il est possible que vous receviez parfois un message d'erreur lorsque vous demanderez à Gemini. Sur ce type d'événement, répétez l'opération de requête une fois de plus pour obtenir la réponse. Par exemple, cliquez sur Expliquer cette entrée de journal. .
5. Consultez l'explication fournie par Gemini. Si l'explication donnée n'est pas suffisante ou peu claire, demandez à Gemini de fournir plus d'informations en utilisant l'une des requêtes suivantes ou en complétant votre propre question
Pouvez-vous m'en dire plus sur ce journal ?
Pouvez-vous m'en dire plus sur l'erreur ?
6. Demandez ensuite à Gemini de vous suggérer des solutions pour résoudre le problème. Par exemple, demandez à Gemini
Comment résoudre ce problème ?
Suggérez une solution pour résoudre cette erreur
Suggérez la manière dont je peux corriger cette erreur
La réponse de Gemini peut varier en fonction du contexte actuel, ainsi que de la formulation et du format de votre requête. Gemini devrait recommander de s'assurer que le code source de la fonction Cloud comporte une fonction nommée hello_http
.
7. L'onglet qui s'affiche contient les journaux Cloud Functions. Sélectionnez l'onglet précédent qui affiche la page de déploiement de la fonction Cloud qui présente l'erreur, puis cliquez sur MODIFIER.
8. Vérifiez que l'authentification est toujours définie sur Allow unauthenticated invocations (Autoriser les appels non authentifiés), puis modifiez la sélection si nécessaire.
9. Cliquez sur SUIVANT en bas pour afficher l'éditeur intégré. Suivez la recommandation Gemini et remplacez le nom de la fonction get_order_list
par hello_http
.
Une fois la modification terminée, cliquez sur DÉPLOYER.
Le processus de déploiement peut prendre quelques minutes. Vérifiez que le déploiement a bien été effectué et qu'aucun message d'erreur ne s'affiche.
REMARQUE : Il est possible que la console continue d'afficher le dernier message d'erreur jusqu'à la fin du processus de déploiement.
10. Vérifiez que la fonction Cloud est opérationnelle en envoyant la requête HTTPS suivante à l'aide de curl
. Vous pouvez utiliser Cloud Shell ou n'importe quel terminal sur lequel les CLI curl
et gcloud
sont installées.Exécutez la commande suivante à partir du terminal Cloud Shell.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
REMARQUE : Pour exécuter cette commande depuis un terminal, vous devez vous authentifier à l'aide de gcloud CLI et définir la valeur de votre ID de projet sur la variable d'environnement GOOGLE_CLOUD_PROJECT
.
Bonus
Le nom de la fonction hello_http
a été défini comme point d'entrée par défaut pour la fonction Cloud déclenchée par HTTP lorsque l'environnement d'exécution Python a été sélectionné. Une autre solution peut consister à conserver get_order_list
comme nom de la fonction dans le code source et à mettre à jour le champ de point d'entrée de la fonction Cloud, situé au-dessus de l'éditeur intégré, à droite du champ "Environnement d'exécution" :
Remplacer le point d'entrée hello_http
par get_order_list
permet de résoudre le problème de déploiement.
4. Nettoyage
Pour effectuer un nettoyage, vous pouvez arrêter le projet ou supprimer l'instance de la fonction Cloud. Vous pouvez supprimer des fonctions Cloud Functions à l'aide de la console ou de la commande CLI, comme indiqué ci-dessous:
gcloud functions delete codelab-cf --region=us-central1
5. Félicitations !
Félicitations ! Vous avez utilisé Gemini pour dépanner et résoudre le problème de votre application. Vous savez maintenant comment cet outil peut vous aider à comprendre les journaux et à obtenir des réponses aux questions concernant Google Cloud.