En este instructivo, se muestra cómo manejar sesiones en Cloud Run.
En muchas apps, se necesita controlar las sesiones para la autenticación y las preferencias del usuario.
El paquete
sessions del Gorilla Web Toolkit incluye una implementación basada en un sistema de archivos para realizar esta
función. Sin embargo, esta implementación no es adecuada para las apps que se pueden entregar desde varias instancias, ya que la sesión que se registra en una instancia puede diferir de las que se registran en otras. El paquete
gorilla/sessions
también incluye una implementación basada en cookies. Sin embargo, esta implementación requiere que se encripten cookies y se almacene toda la sesión en el cliente, en lugar de solo un ID de sesión, que puede ser muy largo para algunas apps.
Objetivos
- Escribe la aplicación.
- Ejecuta la aplicación de manera local.
- Implementa la aplicación en Cloud Run.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto,
usa la calculadora de precios.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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.-
En la Google Cloud consola, abre la aplicación en Cloud Shell.
Cloud Shell brinda acceso de línea de comandos a los recursos en la nube directamente desde el navegador. Abre Cloud Shell en el navegador y haz clic en Continuar para descargar el código de muestra y pasar al directorio de la app
-
En Cloud Shell, configura gcloud CLI para usar
tu nuevo Google Cloud proyecto:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Prepara el proyecto
En la ventana de la terminal, clona el repositorio de la app de muestra en la máquina local:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Ve al directorio que contiene el código de muestra:
cd golang-samples/getting-started/sessions
Comprende cómo funciona la app web
Esta app muestra saludos en diferentes idiomas para cada usuario. A los usuarios recurrentes se los saluda siempre en el mismo idioma.
Para que la app pueda guardar las preferencias de un usuario, debes almacenar la información sobre el usuario actual en una sesión. Esta app de muestra usa Firestore para almacenar los datos de las sesiones.
Primero, la app importa las dependencias y define el tipo de
apppara conservar unsessions.Storey una plantilla HTML, y determina la lista de saludos.A continuación, la app define una función
main, que crea una nueva instancia deapp, registra el controlador de índices y, luego, inicia el servidor HTTP. La funciónnewAppcrea la instancia deappmediante la configuración de los valoresprojectIDycollectionID, y analiza la plantilla HTML.El controlador de índices obtiene la sesión del usuario y, si es necesario, crea una. A las sesiones nuevas se les asigna un idioma aleatorio y un recuento de vistas de 0. Luego el recuento de vistas aumenta a uno, la sesión se guarda, y la plantilla HTML escribe la respuesta.
En el siguiente diagrama, se ilustra cómo Firestore maneja las sesiones para la aplicación Cloud Run.
Borra sesiones
Puedes borrar los datos de las sesiones en la Google Cloud consola o implementar una estrategia de eliminación automática. Cuando usas soluciones de almacenamiento para sesiones, como Memcache o Redis, las sesiones vencidas se borran de forma automática.
Ejecución local
En la ventana de la terminal, compila el objeto binario
sessions:go buildInicia el servidor HTTP:
./sessionsVisualiza la app en el navegador web:
Cloud Shell
En la barra de herramientas de Cloud Shell, haz clic en Vista previa en la Web
y selecciona Vista previa en el puerto 8080.Máquina local
En tu navegador, ve a
http://localhost:8080.Ves uno de los cinco saludos: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" o "Ciao Mondo". El idioma cambia si abres la página en otro navegador o en modo Incógnito. Puedes ver y editar los datos de las sesiones en la Google Cloud consola.

Para detener el servidor HTTP, presiona
Control+Cen la ventana de la terminal.
Implementa y ejecuta en Cloud Run
Puede usar Cloud Run para compilar e implementar una aplicación que se ejecute de manera confiable bajo una gran carga y con grandes cantidades de datos.
- Implementa la aplicación en Cloud Run:
gcloud run deploy firestore-tutorial-go
--source . --allow-unauthenticated --port=8080
--set-env-vars=GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID - Visita la URL que muestra este comando para ver cómo persisten los datos de sesión entre las cargas de la página.
El saludo ahora se entrega en un servidor web que se ejecuta en una instancia de Cloud Run.
Depura la app
Si no puedes conectarte a la aplicación Cloud Run, verifica lo siguiente:
- Comprueba que los comandos de implementación de
gcloudse completaron correctamente y no generaron ningún error. Si hubo errores (por ejemplo,message=Build failed), corrígelos y, luego, intenta implementar la aplicación Cloud Run nuevamente. En la Google Cloud consola, accede a la página Explorador de registros.
Ir a la página Explorador de registros
En la lista desplegable Recursos seleccionados recientemente , haz clic en Aplicación de Cloud Run y, luego, haz clic en All module_id. Verás una lista de las solicitudes de cuando visitaste tu aplicación. Si no ves una lista de solicitudes, confirma que seleccionaste Todos module_id en la lista desplegable. Si ves mensajes de error impresos en la Google Cloud consola, comprueba que el código de tu aplicación coincida con el código de la sección sobre escritura de la aplicación web.
Asegúrate de que la API de Firestore esté habilitada.
Limpia
Borra el proyecto
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que tú quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra la instancia de Cloud Run
- En la Google Cloud consola, ve a la página Versiones de App Engine.
- Selecciona la casilla de verificación de la versión no predeterminada de la app que deseas borrar.
- Para borrar la versión de la app, haz clic en Borrar.
¿Qué sigue?
- Prueba los instructivos de funciones de Cloud Run.
- Obtén más información sobre Cloud Run.
- Prueba Cloud Run, que te permite ejecutar contenedores sin estado en un entorno completamente administrado o en tu propio clúster de Google Kubernetes Engine.