Molte app richiedono la gestione della sessione per l'autenticazione e le preferenze utente. Il core ASP.NET include middleware per archiviare le sessioni in una cache distribuita.
La cache distribuita predefinita di ASP.NET non è in alcun modo distribuita. Archivia i dati delle sessioni nella memoria del server web. Quando un solo server web gestisce un sito web, questa strategia va bene. Tuttavia, quando molti server web gestiscono un sito web, gli utenti di quest'ultimo potrebbero riscontrare errori e perdere dati.
Per evitare errori e perdere i dati, un'app ASP.NET deve utilizzare una cache distribuita che archivia i dati in un datastore permanente. Questo tutorial mostra come gestire le sessioni su Cloud Run archiviandole in Firestore e criptando i cookie con Cloud Key Management Service.
Obiettivi
- Eseguire il deployment dell'app su Cloud Run.
Costi
In questo documento utilizzi 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 la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
-
Per creare un database Firestore in modalità Native, segui questa procedura:
-
Nella console Google Cloud, vai alla pagina Visualizzatore Firestore.
Vai al visualizzatore Firestore - Dalla schermata Seleziona una modalità Firestore, fai clic su Seleziona modalità nativa.
- Seleziona una località per il tuo database Firestore. Questa impostazione di località corrisponde alla località predefinita della risorsa Google Cloud per il tuo progetto Google Cloud . Questa località viene utilizzata per i servizi Google Cloud all'interno del tuo progetto Google Cloud che richiede la geolocalizzazione. Nello specifico, si tratta del tuo bucket predefinito di Cloud Storage e della tua app App Engine.
- Fai clic su Crea database.
-
Nella console Google Cloud, vai alla pagina Visualizzatore Firestore.
-
In Cloud Shell, apri il codice sorgente dell'app.
Vai a Cloud ShellCloud Shell fornisce l'accesso tramite riga di comando alle tue risorse Google Cloud direttamente dal browser.
- Per scaricare il codice di esempio e modificarlo nella directory dell'applicazione, fai clic su Continua.
-
In Cloud Shell, configura gcloud CLI in modo da utilizzare il tuo nuovo progetto Google Cloud:
# Configure gcloud for your project gcloud config set project PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID progetto Google Cloud che hai creato utilizzando la console Google Cloud.Google Cloud CLI è il metodo principale per interagire con le tue risorse Google Cloud dalla riga di comando. In questo tutorial utilizzerai l'interfaccia alla gcloud CLI per eseguire il deployment e monitorare l'app.
Esaminare il codice sorgente
Il seguente diagramma illustra il modo in cui Firestore gestisce le sessioni per l'app Cloud Run.
Il metodo ConfigureServices
nel file Startup.cs
configura l'app per l'utilizzo di Cloud KMS per la crittografia e Cloud Storage per archiviare le chiavi criptate.
-
In Cloud Shell, fai clic su per avviare l'editor ed esaminare il file
Startup.cs
.
Configurazione del progetto Google Cloud
-
Nell'editor di Cloud Shell, modifica il file
appsettings.json
e sostituisci le due istanze diYOUR-PROJECT-ID
con l'ID progetto Google Cloud. Salva il file. -
Crea un nuovo keyring Cloud Key Management Service denominato
dataprotectionprovider
:gcloud kms keyrings create dataprotectionprovider --location global
-
Crea una nuova chiave di Cloud Key Management Service denominata
masterkey
:gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption
-
Crea un bucket Cloud Storage per archiviare le chiavi criptate:
gsutil mb gs://PROJECT_ID-bucket
Deployment ed esecuzione su Cloud Run
Puoi utilizzare Cloud Run per creare ed eseguire il deployment di un'app che può essere eseguita in modo affidabile sotto carichi pesanti e con grandi quantità di dati.
Questo tutorial utilizza Cloud Run per il deployment del server.
In Cloud Shell, pubblica la tua app:
dotnet publish -c Release
Utilizza Cloud Build per creare un container Docker e pubblicare su Container Registry:
gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish
Esegui il container con Cloud Run:
gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated
Prendi nota dell'URL nell'output:
Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving 100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
Per visualizzare l'app pubblicata, vai all'URL che hai copiato dal passaggio precedente.
Eliminazione di sessioni
Puoi eliminare i dati della sessione nella console Google Cloud o implementare una strategia di eliminazione automatica. Se utilizzi soluzioni di archiviazione per sessioni come Memcache o Redis, le sessioni scadute vengono eliminate automaticamente.
Debug dell'app
Se non riesci a connetterti all'app Cloud Run, controlla quanto segue:
- Verifica che i comandi di deployment di
gcloud
siano stati completati correttamente e che non abbiano restituito errori. Se si sono verificati errori (ad esempio,message=Build failed
), correggili e prova a eseguire nuovamente il deployment dell'app Cloud Run. - Consulta la guida a Cloud Run per la visualizzazione dei log.
Esegui la pulizia
Elimina il progetto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.