Questo tutorial mostra come gestire le sessioni su Cloud Run.
Molte app richiedono la gestione delle sessioni per l'autenticazione e le preferenze utente.
Il pacchetto Gorilla Web Toolkit
sessions include un'implementazione basata sul file system per eseguire questa
funzione. Tuttavia, questa implementazione non è adatta a un'app che può essere pubblicata da più istanze, perché la sessione registrata in un'istanza potrebbe essere diversa da altre istanze. Il
gorilla/sessions
pacchetto include anche un'implementazione basata sui cookie. Tuttavia, questa implementazione richiede la crittografia dei cookie e l'archiviazione dell'intera sessione sul client, anziché solo di un ID sessione, che potrebbe essere troppo grande per alcune app.
Obiettivi
- Scrivere l'app.
- Eseguire l'app in locale.
- Eseguire il deployment dell'app in Cloud Run.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Nella Google Cloud console, apri l'app in Cloud Shell.
Cloud Shell fornisce l'accesso da riga di comando alle risorse cloud direttamente dal browser. Apri Cloud Shell nel browser e fai clic Continua per scaricare il codice campione e modificarlo nella directory dell'app.
-
In Cloud Shell, configura gcloud CLI in modo da utilizzare
il nuovo Google Cloud progetto:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Configurazione del progetto
Nella finestra del terminale, clona il repository dell'app di esempio sulla tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Passa alla directory che contiene il codice campione:
cd golang-samples/getting-started/sessions
Informazioni sull'app web
Questa app mostra saluti in lingue diverse per ogni utente. Gli utenti che ritornano vengono sempre salutati nella stessa lingua.
Prima che l'app possa memorizzare le preferenze di un utente, devi avere un modo per archiviare le informazioni sull'utente corrente in una sessione. Questa app di esempio utilizza Firestore per archiviare i dati delle sessioni.
L'app inizia importando le dipendenze, definendo un tipo
appper contenere unsessions.Storee un modello HTML e definendo l'elenco dei saluti.Successivamente, l'app definisce una funzione
main, che crea una nuova istanzaapp, registra il gestore dell'indice e avvia il server HTTP. La funzionenewAppcrea l'istanzaappimpostando i valoriprojectIDecollectionIDe analizza il modello HTML.Il gestore dell'indice recupera la sessione dell'utente, creandone una se necessario. Alle nuove sessioni vengono assegnate una lingua casuale e un conteggio delle visualizzazioni pari a 0. Poi, il conteggio delle visualizzazioni viene aumentato di uno, la sessione viene salvata e il modello HTML scrive la risposta.
Il seguente diagramma illustra come Firestore gestisce le sessioni per l'app Cloud Run.
Eliminazione delle sessioni
Puoi eliminare i dati delle sessioni nella Google Cloud console o implementare una strategia di eliminazione automatica. Se utilizzi soluzioni di archiviazione per le sessioni come Memcache o Redis, le sessioni scadute vengono eliminate automaticamente.
Esecuzione in locale
Nella finestra del terminale, crea il file binario
sessions:go buildAvvia il server HTTP:
./sessionsVisualizza l'app nel browser web:
Cloud Shell
Nella barra degli strumenti di Cloud Shell, fai clic su Anteprima web
e seleziona Anteprima sulla porta 8080.Macchina locale
Nel browser, vai a
http://localhost:8080Viene visualizzato uno dei cinque saluti: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" o "Ciao Mondo". La lingua cambia se apri la pagina in un browser diverso o in modalità di navigazione in incognito. Puoi visualizzare e modificare i dati delle sessioni nella Google Cloud console.

Per arrestare il server HTTP, nella finestra del terminale premi
Control+C.
Esecuzione del deployment e dell'esecuzione su Cloud Run
Puoi utilizzare Cloud Run per creare ed eseguire il deployment di un'app che funziona in modo affidabile anche se sottoposta a un carico elevato e con grandi quantità di dati.
- Esegui il deployment dell'app in Cloud Run:
gcloud run deploy firestore-tutorial-go
--source . --allow-unauthenticated --port=8080
--set-env-vars=GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID - Visita l'URL restituito da questo comando per vedere come i dati delle sessioni persistono tra i caricamenti delle pagine.
Il saluto viene ora fornito da un server web in esecuzione su un'istanza Cloud Run.
Esecuzione del debug dell'app
Se non riesci a connetterti all'app Cloud Run, controlla quanto segue:
- Verifica che i comandi di deployment
gcloudsiano stati completati correttamente e non abbiano generato errori. Se si sono verificati errori (ad esempio,message=Build failed), correggili e prova a eseguire di nuovo il deployment dell'app Cloud Run again. Nella Google Cloud console, vai alla pagina Esplora log.
Nell'elenco a discesa Risorse selezionate di recente, fai clic su Applicazione Cloud Run, quindi su Tutti gli ID modulo. Viene visualizzato un elenco di richieste da quando hai visitato l'app. Se non vedi un elenco di richieste, verifica di aver selezionato Tutti gli ID modulo dall'elenco a discesa. Se nella Google Cloud console vengono visualizzati messaggi di errore, verifica che il codice dell'app corrisponda a l codice nella sezione relativa alla scrittura dell'app web.
Assicurati che l'API Firestore sia abilitata.
Libera spazio
Elimina il progetto
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.
Elimina l'istanza Cloud Run
- Nella Google Cloud console, vai alla pagina Versioni di App Engine.
- Seleziona la casella di controllo per la versione dell'app non predefinita che vuoi eliminare.
- Per eliminare la versione dell'app, fai clic su Elimina.
Passaggi successivi
- Prova i tutorial su Cloud Run Functions.
- Scopri di più su Cloud Run.
- Prova Cloud Run, che ti consente di eseguire container stateless in un ambiente completamente gestito o nel tuo cluster Google Kubernetes Engine.