Ce tutoriel explique comment gérer des sessions sur Cloud Run.
De nombreuses applications requièrent une fonctionnalité de gestion de session pour l'authentification et le stockage des préférences utilisateur.
Le package sessions de Gorilla Web Toolkit intègre une mise en œuvre basée sur un système de fichiers pour exécuter cette fonction. Cette mise en œuvre n'est toutefois pas adaptée à une application pouvant être diffusée depuis plusieurs instances. En effet, la session enregistrée dans une instance peut différer des autres instances. Le package gorilla/sessions intègre également une implémentation basée sur les cookies. Toutefois, cette mise en œuvre nécessite le chiffrement des cookies et le stockage de la session entière sur le client plutôt qu'un ID de session, qui peut être trop volumineux pour certaines applications.
Objectifs
- Écrire l'application
- Exécuter l'application en local
- Déployer l'application sur Cloud Run
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- 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.
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
(
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
(
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. -
Dans la console Google Cloud , ouvrez l'application dans Cloud Shell.
Cloud Shell vous permet d'accéder en ligne de commande à vos ressources cloud, directement depuis votre navigateur. Ouvrez Cloud Shell dans votre navigateur et cliquez sur Continuer pour télécharger l'exemple de code et accéder au répertoire de l'application.
-
Dans Cloud Shell, configurez gcloud CLI pour qu'il utilise votre nouveau projet Google Cloud :
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Mettre en place le projet
Dans votre fenêtre de terminal, clonez le dépôt de l'exemple d'application sur votre machine locale :
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Accédez au répertoire qui contient l'exemple de code :
cd golang-samples/getting-started/sessions
Comprendre l'application Web
L'application affiche des messages d'accueil dans différentes langues pour chaque utilisateur. Les utilisateurs connus reçoivent toujours les messages d'accueil dans la même langue.
Pour que l'application puisse stocker les préférences d'un utilisateur, vous devez mettre en œuvre une méthode permettant de stocker les informations sur l'utilisateur actuel dans une session. Dans cet exemple d'application, les données de session sont stockées à l'aide de Firestore.
L'application commence par importer des dépendances, puis définit un type
appdevant contenir un élémentsessions.Storeet un modèle HTML, et enfin définit la liste des messages d'accueil.Ensuite, l'application définit une fonction
main, qui crée une instanceapp, enregistre le gestionnaire d'index et démarre le serveur HTTP. La fonctionnewAppcrée l'instanceappen définissant les valeursprojectIDetcollectionID, puis analyse le modèle HTML.Le gestionnaire d'index obtient la session de l'utilisateur ou en crée une si nécessaire. Les nouvelles sessions se voient attribuer une langue aléatoire et un nombre de vues égal à 0. Ensuite, le nombre de vues est incrémenté d'une unité, la session est enregistrée et le modèle HTML écrit la réponse.
Le diagramme suivant illustre la façon dont Firestore gère les sessions pour l'application Cloud Run.
Supprimer des sessions
Vous pouvez supprimer les données de session dans la consoleGoogle Cloud ou mettre en œuvre une stratégie de suppression automatique. Si vous utilisez des solutions de stockage pour des sessions telles que Memcache ou Redis, les sessions expirées sont automatiquement supprimées.
Exécution locale
Dans votre fenêtre de terminal, créez le fichier binaire
sessions:go buildDémarrez le serveur HTTP :
./sessionsAffichez l'application dans votre navigateur Web :
Cloud Shell
Dans la barre d'outils Cloud Shell, cliquez sur Aperçu sur le Web
et sélectionnez Prévisualiser sur le port 8080.Machine locale
Dans votre navigateur, accédez à
http://localhost:8080L'un des cinq messages d'accueil suivants s'affiche : "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". La langue change si vous ouvrez la page dans un autre navigateur ou en mode navigation privée. Vous pouvez consulter et modifier les données de session dans la consoleGoogle Cloud .

Dans votre fenêtre de terminal, appuyez sur
Control+Cpour arrêter le serveur HTTP.
Déployer et exécuter sur Cloud Run
Vous pouvez utiliser Cloud Run pour créer et déployer une application qui fonctionne de manière fiable sous une charge élevée et avec de grandes quantités de données.
- Déployez l'application sur Cloud Run :
gcloud run deploy firestore-tutorial-go
--source . --allow-unauthenticated --port=8080
--set-env-vars=GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID - Accédez à l'URL renvoyée par cette commande pour observer comment les données de session persistent entre les chargements de page.
Le message d'accueil est désormais diffusé par un serveur Web exécuté sur une instance Cloud Run.
Déboguer l'application
Si vous ne pouvez pas vous connecter à votre application Cloud Run, vérifiez les points suivants :
- Vérifiez que les commandes de déploiement
gcloudont bien abouti et n'ont généré aucune erreur. S'il y a eu des erreurs (par exemple,message=Build failed), corrigez-les et réessayez de déployer l'application Cloud Run. Dans la console Google Cloud , accédez à la page Explorateur de journaux.
Accéder à la page "Explorateur de journaux"
Dans la liste déroulante Ressources sélectionnées récemment, cliquez sur Application Cloud Run, puis sur Tous les ID de module. La liste des requêtes correspondant à votre accès à l'application s'affiche. Si cette liste n'apparaît pas, vérifiez que vous avez bien sélectionné Tous les ID de module dans la liste déroulante. Si des messages d'erreur s'affichent dans la console Google Cloud , vérifiez que le code de votre application correspond au code décrit dans la section sur l'écriture de l'application Web.
Assurez-vous que l'API Firestore est activée.
Effectuer un nettoyage
Supprimer le projet
- 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.
Supprimer l'instance Cloud Run
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Pour supprimer la version de l'application, cliquez sur Supprimer.
Étapes suivantes
- Découvrez les tutoriels Cloud Run Functions.
- Obtenez plus d'informations sur Cloud Run.
- Essayez Cloud Run, qui vous permet d'exécuter des conteneurs sans état dans un environnement entièrement géré ou dans votre propre cluster Google Kubernetes Engine.