1. Panoramica
Il deployment di un'applicazione web per la prima volta può sembrare difficile. Anche dopo il primo deployment, se il processo è troppo laborioso, potresti evitare di eseguire il deployment di nuove versioni dell'applicazione. Con il deployment continuo, puoi eseguire il deployment automatico delle modifiche alla tua applicazione con facilità.
In questo lab scriverai un'applicazione web e configurerai Cloud Run per eseguire automaticamente il deployment dell'applicazione quando viene apportata una modifica al codice sorgente. Quindi, modifichi l'applicazione ed esegui nuovamente il deployment.
Cosa imparerai a fare
- Scrivere un'applicazione web con l'editor di Cloud Shell
- Archivia il codice dell'applicazione in GitHub
- Eseguire automaticamente il deployment dell'applicazione in Cloud Run
- Aggiungere l'AI generativa alla tua applicazione utilizzando Vertex AI
2. Prerequisiti
- Se non hai ancora un Account Google, devi crearne uno.
- Utilizza un account personale anziché un account di lavoro o della scuola. Gli account di lavoro e della scuola potrebbero avere limitazioni che impediscono l'attivazione delle API necessarie per questo lab.
- Se non hai già un account GitHub, devi crearne uno
- Utilizza un account GitHub esistente, se ne hai uno. I nuovi account hanno maggiori probabilità di essere bloccati da GitHub come spam.
- Configura l'autenticazione a due fattori sul tuo account GitHub per ridurre il rischio che il tuo account venga contrassegnato come spam.
3. Configurazione del progetto
- Accedi alla console Google Cloud.
- Abilita la fatturazione in Cloud Console.
- Il completamento di questo lab dovrebbe costare meno di 1 $in risorse cloud.
- Per evitare ulteriori addebiti, puoi seguire i passaggi alla fine di questo lab per eliminare le risorse.
- I nuovi utenti hanno diritto alla prova senza costi di 300$.
- Parteciperai a un evento Gen AI for Devs? Potrebbe essere disponibile un credito di 1$.
- Crea un nuovo progetto o scegli di riutilizzarne uno esistente.
- Verifica che la fatturazione sia abilitata in I miei progetti in Fatturazione Cloud
- Se il nuovo progetto riporta
Billing is disablednella colonnaBilling account:- Fai clic sui tre puntini nella colonna
Actions. - Fai clic su Modifica fatturazione.
- Seleziona l'account di fatturazione che vuoi utilizzare.
- Fai clic sui tre puntini nella colonna
- Se partecipi a un evento Gen AI for Devs, l'account probabilmente si chiamerà Account di fatturazione di prova di Google Cloud Platform.
- Se il nuovo progetto riporta
4. Apri editor di Cloud Shell
- Vai all'editor di Cloud Shell.
- Se il terminale non viene visualizzato nella parte inferiore dello schermo, aprilo:
- Fai clic sul menu a tre linee
. - Fai clic su Terminale.
- Fai clic su Nuovo terminale
.
- Fai clic sul menu a tre linee
- Nel terminale, imposta il tuo progetto con questo comando:
- Formato:
gcloud config set project [PROJECT_ID] - Esempio:
gcloud config set project lab-project-id-example - Se non ricordi l'ID progetto:
- Puoi elencare tutti gli ID progetto con:
gcloud projects list | awk '/PROJECT_ID/{print $2}'

- Puoi elencare tutti gli ID progetto con:
- Formato:
- Se ti viene richiesto di concedere l'autorizzazione, fai clic su Autorizza per continuare.

- Dovresti vedere questo messaggio:
Se visualizzi unUpdated property [core/project].
WARNINGe ti viene chiestoDo you want to continue (Y/N)?, probabilmente hai inserito l'ID progetto in modo errato. PremiN, premiEntere prova a eseguire di nuovo il comandogcloud config set project.
5. Abilita API
Nel terminale, abilita le API:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Il completamento di questo comando potrebbe richiedere alcuni minuti, ma alla fine dovrebbe essere visualizzato un messaggio di operazione riuscita simile a questo:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. Configura Git
- Imposta l'email utente Git globale:
git config --global user.email "you@example.com" - Imposta il tuo nome utente Git globale:
git config --global user.name "Your Name" - Imposta il ramo predefinito di Git globale su
main:git config --global init.defaultBranch main
7. Scrivi il tuo codice
Per scrivere un'applicazione in Go:
- Vai alla home directory:
cd ~ - Crea la directory
codelab-genai:mkdir codelab-genai - Vai alla directory
codelab-genai:cd codelab-genai - Inizializza un file go.mod per dichiarare il nostro modulo:
go mod init codelab-genai - Crea un file
main.go:touch main.go - Apri il file
main.gonell'editor di Cloud Shell: Ora nella parte superiore dello schermo dovrebbe essere visualizzato un file vuoto. Qui puoi modificare questo filecloudshell edit main.gomain.go.
- Modifica
main.goe incolla il seguente codice: Dopo alcuni secondi, Cloud Shell Editor salverà automaticamente il codice. Questo codice risponde alle richieste HTTP con il nostro saluto "Hello world!".package main import ( "fmt" "log" "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world!") }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
Il codice iniziale per la tua applicazione è pronto per essere archiviato nel controllo delle versioni.
8. Crea un repository
- Torna al terminale Cloud Shell nella parte inferiore dello schermo.
- Assicurati di trovarti ancora nella directory corretta:
cd ~/codelab-genai - Inizializza il repository Git
git init -b main - Accedi all'interfaccia a riga di comando di GitHub
Premigh auth loginEnterper accettare le opzioni predefinite e segui le istruzioni nello strumento dell'interfaccia a riga di comando di GitHub, tra cui:- A quale account vuoi accedere?
GitHub.com - Qual è il tuo protocollo preferito per le operazioni Git su questo host?
HTTPS - Autenticare Git con le tue credenziali GitHub?
Y(Salta se non viene visualizzato.) - In che modo vuoi autenticare l'interfaccia a riga di comando di GitHub?
Login with a web browser - Copia il codice monouso
- Apri https://github.com/login/device
- Incolla il codice monouso
- Fai clic su Autorizza GitHub.
- Completa l'accesso
- A quale account vuoi accedere?
- Verifica di aver eseguito l'accesso:
Se hai eseguito correttamente l'accesso, dovresti visualizzare il tuo nome utente GitHub.gh api user -q ".login" - Crea una variabile
GITHUB_USERNAMEGITHUB_USERNAME=$(gh api user -q ".login") - Verifica di aver creato la variabile di ambiente:
Se hai creato correttamente la variabile, dovresti visualizzare il tuo nome utente GitHub.echo ${GITHUB_USERNAME} - Crea un repository GitHub vuoto denominato
codelab-genai: Se ricevi l'errore:gh repo create codelab-genai --private In questo caso, hai già un repository denominatoGraphQL: Name already exists on this account (createRepository)
codelab-genai. Per continuare a seguire questo tutorial, hai due opzioni:- Elimina il repository GitHub esistente
- Crea un repository con un nome diverso e ricordati di modificarlo nei comandi seguenti.
- Aggiungi il repository
codelab-genaicome repository remotoorigin:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. Condividere il codice
- Verifica di trovarti nella directory corretta:
cd ~/codelab-genai - Aggiungi tutti i file nella directory corrente a questo commit:
git add . - Crea il primo commit:
git commit -m "add http server" - Esegui il push del commit nel ramo
maindel repositoryorigin:git push -u origin main
Puoi eseguire questo comando e visitare l'URL risultante per visualizzare il codice dell'applicazione su GitHub:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/main.go \n\n"
10. Configurare i deployment automatici
- Lascia aperta la scheda dell'editor di Cloud Shell. Torneremo a questa scheda in un secondo momento.
- In una nuova scheda, visita la pagina Cloud Run.
- Seleziona il progetto Google Cloud corretto nella console

- Fai clic su COLLEGA REPO.
- Fai clic su CONFIGURA CON CLOUD BUILD
- .
- Seleziona GitHub come Provider di repository
- Se non hai eseguito l'accesso al tuo account GitHub nel browser, accedi con le tue credenziali.
- Fai clic su Autentica e poi su Continua.
- Dopo aver eseguito l'accesso, nella pagina Cloud Run viene visualizzato il messaggio L'app GitHub non è installata in nessun repository.
- Fai clic sul pulsante INSTALLA GOOGLE CLOUD BUILD.
- Nella pagina Configurazione dell'installazione, seleziona Solo repository selezionati e scegli il repository codelab-genai che hai creato tramite la CLI.
- Fai clic su Installa.
- Nota: se hai molti repository GitHub, il caricamento potrebbe richiedere alcuni minuti.
- Seleziona
your-user-name/codelab-genaicome repository- Se il repository non è presente, fai clic sul link Gestisci repository connessi.
- Lascia Branch come
^main$ - Fai clic su Go, Node.js, Python, Java, .NET Core, Ruby o PHP tramite i buildpack Google Cloud
- Lascia invariati gli altri campi (
Build context directory,EntrypointeFunction target).
- Lascia invariati gli altri campi (
- Fai clic su Salva.
- Seleziona GitHub come Provider di repository
- Scorri verso il basso fino a Autenticazione.
- Fai clic su Consenti chiamate non autenticate.
- Fai clic su CREA.
Una volta terminata la build (operazione che richiederà diversi minuti), esegui questo comando e visita l'URL risultante per visualizzare l'applicazione in esecuzione:
echo -e "\n\nOnce the build finishes, visit your live application:\n \
"$( \
gcloud run services list | \
grep codelab-genai | \
awk '/URL/{print $2}' | \
head -1 \
)" \n\n"
11. Modificare il codice
- Torna al terminale Cloud Shell nella parte inferiore dello schermo.
- Assicurati di trovarti ancora nella directory corretta:
cd ~/codelab-genai - Riapri
main.gonell'editor di Cloud Shellcloudshell edit main.go - Installa l'SDK Vertex AI per Go:
go get cloud.google.com/go/vertexai/genai - Installa la libreria Metadata per Go per ottenere l'ID progetto corrente:
go get cloud.google.com/go/compute/metadata - Sostituisci il codice nel file
main.gocon:package main import ( "context" "fmt" "log" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) func main() { ctx := context.Background() var projectId string var err error projectId = os.Getenv("GOOGLE_CLOUD_PROJECT") if projectId == "" { projectId, err = metadata.ProjectIDWithContext(ctx) if err != nil { return } } var client *genai.Client client, err = genai.NewClient(ctx, projectId, "us-central1") if err != nil { return } defer client.Close() model := client.GenerativeModel("gemini-1.5-flash-001") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { animal := r.URL.Query().Get("animal") if animal == "" { animal = "dog" } resp, err := model.GenerateContent( ctx, genai.Text( fmt.Sprintf("Give me 10 fun facts about %s. Return the results as HTML without markdown backticks.", animal)), ) if err != nil { w.WriteHeader(http.StatusServiceUnavailable) return } if len(resp.Candidates) > 0 && len(resp.Candidates[0].Content.Parts) > 0 { htmlContent := resp.Candidates[0].Content.Parts[0] w.Header().Set("Content-Type", "text/html; charset=utf-8") fmt.Fprint(w, htmlContent) } }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
12. Esegui di nuovo il deployment
- Assicurati di trovarti ancora nella directory corretta in Cloud Shell:
cd ~/codelab-genai - Esegui questi comandi per eseguire il commit di una nuova versione dell'applicazione nel repository Git locale:
git add . git commit -m "add latest changes" - Esegui il push delle modifiche in GitHub:
git push - Al termine della creazione, esegui questo comando e visita l'applicazione di cui è stato eseguito il deployment:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
Potrebbero essere necessari diversi minuti prima che la build venga completata e tu possa visualizzare le modifiche.
Puoi visualizzare la cronologia di tutte le revisioni qui: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (Facoltativo) Controlla l'utilizzo di Vertex AI
Come per altri servizi Google Cloud, puoi controllare le operazioni di Vertex AI. Gli audit log ti aiutano a rispondere alle domande "Chi ha fatto cosa, dove e quando?". Gli audit log amministrativi per Vertex AI sono abilitati per impostazione predefinita. Per controllare le richieste di generazione di contenuti, devi abilitare gli audit log di accesso ai dati:
- Nella console Google Cloud, vai alla pagina Audit Logs:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione. - Assicurati che il progetto Google Cloud esistente sia quello in cui crei l'applicazione Cloud Run.
- Nella tabella Configurazione degli audit log di accesso ai dati, trova e seleziona
Vertex AI APInella colonna Servizio. - Nella scheda Tipi di log, seleziona i tipi di audit log Accesso ai dati
Admin readeData read. - Fai clic su Salva.
Dopo averlo attivato, potrai visualizzare i log di controllo per ogni chiamata dell'applicazione. Per visualizzare gli audit log con i dettagli della chiamata:
- Torna all'applicazione di cui è stato eseguito il deployment e aggiorna la pagina per attivare il log.
- Nella console Google Cloud, vai alla pagina Esplora log:
- Nella finestra della query, digita:
LOG_ID("cloudaudit.googleapis.com%2Fdata_access") protoPayload.serviceName="aiplatform.googleapis.com" - Fai clic su Esegui query.
I log di controllo acquisiscono l'utilizzo dell'API Vertex AI, ma non consentono di osservare i dati correlati al carico di lavoro, come prompt o dettagli della risposta.
14. (Facoltativo) Aumenta l'osservabilità del tuo workload AI
I log di controllo non acquisiscono informazioni relative al workload. Per aumentare l'osservabilità dei carichi di lavoro, devi registrare esplicitamente queste informazioni. Per farlo, puoi utilizzare il tuo framework di logging preferito. I passaggi seguenti mostrano un modo per farlo utilizzando la libreria di logging strutturato di Go.
- Riapri
main.gonell'editor di Cloud Shellcloudshell edit ~/codelab-genai/main.go - Modifica il blocco di importazione in modo da includere le librerie di logging strutturato e JSON di Go:
import ( "context" "encoding/json" "fmt" "log" "log/slog" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) - Dopo aver inizializzato il client Vertex (riga 33), aggiungi le seguenti righe per inizializzare un logger strutturato che utilizza i campi corretti per Google Cloud Logging:
opts := &slog.HandlerOptions{ Level: slog.LevelDebug, ReplaceAttr: func(group []string, a slog.Attr) slog.Attr { if a.Key == slog.LevelKey { return slog.Attr{Key: "severity", Value: a.Value} } if a.Key == slog.MessageKey { return slog.Attr{Key: "message", Value: a.Value} } return slog.Attr{Key: a.Key, Value: a.Value} }, } jsonHandler := slog.NewJSONHandler(os.Stdout, opts) slog.SetDefault(slog.New(jsonHandler)) - Dopo aver controllato la presenza di una risposta a
GenerateContent(riga 69), aggiungi le seguenti righe all'interno del blocco if: Questo codice scrive injsonBytes, err := json.Marshal(resp) if err != nil { slog.Error("Failed to marshal response to JSON", "error", err) } else { jsonString := string(jsonBytes) slog.Debug("Complete response content", "json_response", jsonString) }stdoutinformazioni sui contenuti generati utilizzando il formato di registrazione strutturata. Un agente di logging in Cloud Run acquisisce l'output stampato sustdoute scrive questo formato in Cloud Logging. - Riapri Cloud Shell e digita questo comando per assicurarti di trovarti nella directory corretta:
cd ~/codelab-genai - Esegui il commit delle modifiche:
git commit -am "Observe generated content" - Esegui il push delle modifiche su GitHub per attivare il nuovo deployment della versione modificata:
git push
Dopo il deployment della nuova versione, puoi osservare le informazioni di debug sulle chiamate a Vertex AI.
Per visualizzare i log dell'applicazione:
- Nella console Google Cloud, vai alla pagina Esplora log:
- Nella finestra della query, digita:
LOG_ID("run.googleapis.com%2Fstdout") severity=DEBUG - Fai clic su Esegui query.
Il risultato della query mostra i log con il prompt e la risposta di Vertex AI, incluse le "valutazioni di sicurezza" che possono essere utilizzate per monitorare le pratiche di sicurezza.
15. (Facoltativo) Pulizia
Sebbene non siano previsti addebiti per Cloud Run quando il servizio non è in uso, ti potrebbero comunque essere addebitati i costi di archiviazione dell'immagine container in Artifact Registry. Puoi eliminare il progetto Cloud per evitare addebiti. L'eliminazione del progetto Cloud interrompe la fatturazione per tutte le risorse utilizzate al suo interno.
Se vuoi, elimina il progetto:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
Potresti anche voler eliminare le risorse non necessarie dal disco Cloud Shell. Puoi:
- Elimina la directory del progetto codelab:
rm -rf ~/codelab-genai - Pulisci tutti i pacchetti Go di cui potresti non aver più bisogno:
cd ~ go clean -modcache - Attenzione. Questa azione non può essere annullata. Se vuoi eliminare tutti i contenuti di Cloud Shell per liberare spazio, puoi eliminare l'intera home directory. Fai attenzione che tutto ciò che vuoi conservare sia salvato altrove.
sudo rm -rf $HOME
16. Complimenti
In questo lab hai scritto un'applicazione web e configurato Cloud Run per eseguire automaticamente il deployment dell'applicazione quando viene apportata una modifica al codice sorgente. Poi hai modificato l'applicazione e l'hai eseguito di nuovo il deployment.
Se ti è piaciuto questo lab, puoi riprovare in un altro linguaggio di programmazione o framework:
Se ti interessa partecipare a uno studio di ricerca sull'esperienza utente (UX) per migliorare i prodotti che hai utilizzato oggi, registrati qui.
Ecco alcune opzioni per continuare a imparare:
- Documenti: utilizza Genkit come astrazione flessibile del modello che semplifica l'integrazione di qualsiasi API modello e l'utilizzo di modelli gestiti dalla community.
- Codelab: come eseguire il deployment di un'app di chat basata su Gemini su Cloud Run
- Come utilizzare la chiamata di funzione di Gemini con Cloud Run
- Workshop on demand: Google Kubernetes Engine Onboard
- Come utilizzare l'API Cloud Run Jobs Video Intelligence per elaborare un video scena per scena