Informazioni su questo codelab
1. Introduzione
In questo lab utilizzerai Gemini, un collaboratore basato sull'IA in Google Cloud, per risolvere un problema relativo al deployment della funzione Cloud Functions analizzando i log degli errori, identificando la causa principale del problema e trovando come risolverlo.
Cosa farai...
- Utilizzerai il terminale Cloud Shell e gcloud CLI per configurare l'ambiente, tra cui l'abilitazione delle API di Google pertinenti e la creazione di una funzione Cloud Functions dal codice fornito
- Utilizzerai il riepilogo dei log di Cloud Logging per generare riepiloghi dei log in modo da comprendere le informazioni acquisite.
- Parlerai con Gemini per ricevere assistenza per la risoluzione e la risoluzione del problema.
Cosa imparerai...
- Come utilizzare Gemini con Google Cloud Observability e per la risoluzione dei problemi.
- Come trovare e comprendere i log delle funzioni Cloud Functions con l'aiuto di Gemini.
Che cosa ti serve...
- Browser web Chrome
- Un progetto Google Cloud con fatturazione abilitata
- Un Account Google con autorizzazioni di accesso al progetto che ti consente di abilitare le API e manipolare le risorse
Questo lab è rivolto a tecnici DevOps e di piattaforme e sviluppatori di software di tutti i livelli, inclusi i principianti. Il nostro obiettivo sarà fare esperienza pratica con le funzionalità di Gemini nella risoluzione dei problemi.
2. Configurazione
Questa sezione illustra tutto ciò che devi fare per iniziare a utilizzare questo lab.
Configura ambiente
1. Accedi alla console Cloud aprendo https://console.cloud.google.com.
2. Seleziona un progetto Google Cloud con cui prevedi di lavorare per questo lab.
3. Apri la pagina Cloud Functions nella console. Per farlo, seleziona Cloud Functions dal menu di navigazione (icona in alto a sinistra PUBLISHER nella finestra della console).
In alternativa, puoi cercare "Cloud Functions" nell'area di ricerca della console:
Fai clic sul pulsante Crea funzione sopra l'elenco di funzioni
Se non hai mai utilizzato Cloud Functions in questo progetto, per poter lavorare ti verrà chiesto di abilitare le API di Google.
Fai clic su ABILITA per continuare.
4. Definire le proprietà di base della nuova funzione Cloud Functions.
- Imposta il nome su "
codelab-cf
" - Seleziona l'opzione Consenti chiamate non autenticate
Per completare il passaggio, fai clic sul pulsante SUCCESSIVO nell'area in basso a sinistra della finestra:
Dopo aver fatto clic su AVANTI, è possibile che ti venga chiesto di abilitare altre API di Google. Come nel passaggio 4, fai clic su ABILITA.
Configura il runtime e il codice della funzione Cloud Functions
Questo CodeLab utilizza Python come linguaggio di programmazione. Non preoccuparti se non hai dimestichezza con Python. Per completare questo CodeLab non è necessaria la conoscenza di Python.
5. Seleziona Python 3.11 come runtime della funzione
Tieni presente che la modifica del runtime cambia il codice sorgente mostrato nell'editor in linea.
6. Copia il codice seguente nell'editor in linea per modificare l'esempio della guida rapida generate automaticamente.
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)
Questo codice legge l'attributo path
dalla richiesta GET, analizza il percorso per recuperare il nome del bucket e chiama l'API Google Cloud Storage per ottenere un elenco degli oggetti archiviati in questo percorso. La funzione (get_object_list
) accetta una richiesta che è un oggetto Flask come argomento di input e restituisce i nomi degli oggetti come array JSON.
7. Seleziona il file requirements.txt
dall'elenco dei file rimasti nell'editor in linea. Sostituisci l'elenco attuale di dipendenze con quello nuovo copiando il codice seguente nell'editor in linea.
google-cloud-storage
8. Per eseguire il deployment della funzione Cloud Functions, fai clic su ESEGUI IL DEPLOYMENT in basso a sinistra.
Potrebbe essere necessario attendere un paio di minuti fino al completamento del processo di deployment. Se hai seguito attentamente le istruzioni di configurazione, dovresti aspettarti che il deployment venga segnalato come non riuscito.
3. Individuazione e risoluzione del problema
In questa sezione utilizzerai la funzionalità Spiegazioni dei log e altre risorse di assistenza di Gemini per identificare il problema e il modo per risolverlo.
1. Il deployment non va a buon fine. Dovresti vedere un messaggio di errore che fornisce informazioni aggiuntive e un'opzione per visualizzare i log di deployment. Fai clic su VISUALIZZA LOG per visualizzare i log del deployment.
NOTA: i log di deployment verranno aperti in una scheda separata nello stesso browser. Dovrai spostarti tra le schede per completare questo codelab.
NOTA: potresti non vedere le righe dei log quando fai clic su VISUALIZZA LOG o potresti visualizzare solo un paio di righe. In questo evento, utilizza il selettore dell'intervallo di tempo nel riquadro delle query di Esplora log e seleziona Ultimi 30 minuti.
2. Esamina i log nella scheda aperta. Tieni presente che i riepiloghi dei log hanno l'aspetto di più righe dell'elenco di chiamate dell'eccezione. Perché la funzione Cloud Functions acquisisce il testo stampato su stdout
o stderr
e scrive ogni riga come voce di log separata. Altre righe di log riassumono informazioni sul codice di errore di uscita e altre informazioni segnalate dalle API Cloud Functions e Cloud Run.
Puoi fare clic su una qualsiasi riga per visualizzare ulteriori informazioni su un determinato log. Se fai clic sui log espansi puoi fare clic su altri elementi UI che ti consentono di copiare tutte le informazioni relative al log, espandere tutti i campi per visualizzare tutti i dati della voce di log e spiegare la voce di log utilizzando Gemini.
4. L'eccezione di chiamata non è molto informativa. Esamina i log per trovare la fine del log dell'analisi dello stack dell'eccezione. È la riga che dice "Container called exit(1)
". Il seguente riepilogo dei log indica:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Sembra una buona candidata per un'indagine. Fai clic su questa riga per espandere la voce di log. Fai clic sul pulsante "Spiega questa voce di log". per visualizzare ulteriori informazioni sul log selezionato.
Se Gemini non è stato utilizzato in precedenza in questo progetto, ti verrà chiesto di abilitare un'API obbligatoria. Se ti viene richiesto di abilitare l'API, fai clic su ABILITA per procedere.
NOTA: di tanto in tanto potresti ricevere un messaggio di errore quando richiedi a Gemini. In questo evento, ripeti l'operazione del prompt ancora una volta per ottenere la risposta. Ad esempio, fai clic sul pulsante "Spiega questa voce di log". di nuovo.
5. Esamina la spiegazione fornita da Gemini. Se la spiegazione fornita non è sufficiente o non chiara, chiedi a Gemini di fornire maggiori informazioni utilizzando uno dei seguenti prompt o componendo la tua domanda.
Puoi fornire maggiori informazioni su questo log?
Puoi fornire maggiori informazioni sull'errore?
6. Quindi chiedi a Gemini dei suggerimenti per risolvere il problema. Ad esempio, chiedi a Gemini
Come risolvere il problema?
Suggerisci una soluzione per risolvere l'errore
Suggerisci come posso correggere l'errore
La risposta di Gemini può variare a seconda del contesto attuale, nonché della formulazione e del formato del prompt. Si prevede che Gemini consiglierà di garantire che il codice sorgente della funzione Cloud Functions abbia una funzione con il nome hello_http
.
7. Al momento stai visualizzando la scheda che mostra i log di Cloud Functions. Seleziona la scheda precedente che mostra la pagina Deployment della funzione Cloud Functions con l'errore e fai clic su MODIFICA.
8. Verifica che l'opzione per l'autenticazione sia ancora impostata su Consenti chiamate non autenticate e aggiorna la selezione, se necessario.
9. Fai clic su AVANTI in basso per visualizzare l'Editor in linea. Segui il suggerimento di Gemini e modifica il nome della funzione da get_order_list
a hello_http
.
Al termine della modifica, fai clic su ESEGUI IL DEPLOYMENT.
Potrebbe essere necessario attendere un paio di minuti fino al completamento del processo di deployment. Verifica che il deployment sia stato completato correttamente e che non vengano visualizzati messaggi di errore.
NOTA: la console potrebbe continuare a mostrare l'ultimo messaggio di errore fino al completamento del processo di deployment.
10. Verifica che la funzione Cloud Functions sia operativa inviando la seguente richiesta HTTPS tramite curl
. Puoi utilizzare Cloud Shell o farlo da qualsiasi terminale in cui siano installati curl
e gcloud
CLI.executing questo comando dal terminale 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)"
NOTA: per eseguire questo comando da un terminale, è necessario eseguire l'autenticazione utilizzando gcloud CLI e impostare il valore dell'ID progetto sulla variabile di ambiente GOOGLE_CLOUD_PROJECT
.
Bonus
Il nome della funzione hello_http
è stato definito come punto di ingresso predefinito per la funzione Cloud Functions attivata da HTTP quando è stato selezionato il runtime Python. Una soluzione alternativa può essere mantenere get_order_list
come nome della funzione nel codice sorgente e aggiornare il campo del punto di ingresso della funzione Cloud Functions che si trova sopra l'Editor in linea, a destra del campo Runtime:
La modifica del punto di ingresso da hello_http
a get_order_list
risolverà il problema del deployment.
4. Esegui la pulizia
Per eseguire la pulizia puoi arrestare il progetto o eliminare l'istanza della funzione Cloud Functions. Puoi eliminare Cloud Functions utilizzando la console o il comando CLI come segue:
gcloud functions delete codelab-cf --region=us-central1
5. Complimenti
Complimenti: hai utilizzato correttamente Gemini per risolvere il problema della tua applicazione e ora comprendi come può aiutarti a comprendere i log e a ricevere risposte alle domande su Google Cloud.