Molte app richiedono la gestione delle sessioni per l'autenticazione e le preferenze utente. Il framework Node.js Express include un'implementazione basata sulla memoria 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 differire da altre istanze. Questo tutorial mostra come gestire le sessioni su App Engine.
Obiettivi
- Scrivi l'app.
- Esegui l'app localmente.
- Eseguire il deployment dell'app su App Engine.
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 account Google Cloud . 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 carichi di lavoro.
-
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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Configurazione del progetto
Nella finestra del terminale, inizia in una directory di tua scelta e crea una nuova directory denominata
sessions. Tutto il codice per questo tutorial si trova all'interno della directorysessions.Passa alla directory
sessions:cd sessionsInizializza il file
package.json:npm init .Installa le dipendenze:
npm install \ --save @google-cloud/connect-firestore @google-cloud/firestore express express-session
Al termine di questo tutorial, la struttura finale dei file sarà simile alla seguente:
sessions
├── app.yaml
├── index.js
└── package.json
Scrivere l'app web
Questa app mostra saluti in lingue diverse per ogni utente. Gli utenti di ritorno vengono sempre accolti nella stessa lingua.
Prima che l'app possa memorizzare le preferenze di un utente, devi trovare un modo per archiviare le informazioni sull'utente corrente in una sessione. Questa app di esempio utilizza Firestore per archiviare i dati di sessione.
Puoi utilizzare connect-firestore, un archivio di sessioni compatibile con express-session.
Nella finestra del terminale, crea un file denominato
index.jscon il seguente contenuto:
Il seguente diagramma illustra come Firestore gestisce le sessioni per l'app App Engine.
Dopo aver impostato app.use(session), ogni richiesta ha una proprietà req.session che puoi utilizzare per identificare gli utenti ricorrenti. I dati della sessione vengono archiviati in Firestore.
Eliminazione delle sessioni
Connect-firestore non elimina le sessioni vecchie o scadute. Puoi eliminare i dati della sessione nella consoleGoogle Cloud 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, installa le dipendenze per il progetto Google Cloud :
npm installAvvia il server HTTP:
npm startVisualizza 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à Incognito. Puoi visualizzare e modificare i dati della sessione nella consoleGoogle Cloud .

Per arrestare il server HTTP, premi
Control+Cnella finestra del terminale.
Deployment ed esecuzione su App Engine
Puoi utilizzare l'ambiente standard di App Engine 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.
Questo tutorial utilizza l'ambiente standard App Engine per eseguire il deployment del server.
Nella finestra del terminale, crea un file
app.yamle copia quanto segue:Esegui il deployment dell'app su App Engine:
gcloud app deployVisualizza l'app live inserendo il seguente URL:
https://PROJECT_ID.REGION_ID.r.appspot.comSostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google CloudREGION_ID: un codice che App Engine assegna alla tua app
Il saluto viene ora fornito da un server web in esecuzione su un'istanza App Engine.
Eseguire il debug dell'app
Se non riesci a connetterti alla tua app App Engine, 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 App Engine. Nella console Google Cloud , vai alla pagina Esplora log.
Nell'elenco a discesa Risorse selezionate di recente, fai clic su Applicazione App Engine, quindi fai clic su Tutti i module_id. Viene visualizzato un elenco di richieste relative alle tue visite all'app. Se non vedi un elenco di richieste, verifica di aver selezionato Tutti gli ID modulo dall'elenco a discesa. Se visualizzi messaggi di errore stampati nella console Google Cloud , verifica che il codice della tua app corrisponda al codice nella sezione relativa alla scrittura dell'app web.
Assicurati che l'API Firestore sia abilitata.
Esegui la pulizia
Elimina il progetto
- Nella console Google Cloud , 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, quindi fai clic su Chiudi per eliminare il progetto.
Elimina l'istanza App Engine
- Nella console Google Cloud , vai alla pagina Versioni per App Engine.
- Seleziona la casella di controllo per la versione dell'app non predefinita da eliminare.
- Per eliminare la versione dell'app, fai clic su Elimina.
Passaggi successivi
- Prova altri tutorial su Cloud Run Functions.
- Scopri di più su App Engine.
- Prova Cloud Run, che ti consente di eseguire container stateless in un ambiente completamente gestito o nel tuo cluster Google Kubernetes Engine.