Este tutorial mostra como processar sessões no Cloud Run.
Muitas apps precisam de processamento de sessões para autenticação e preferências do utilizador.
O pacote Gorilla Web Toolkit
sessions é fornecido com uma implementação baseada no sistema de ficheiros para executar esta função. No entanto, esta implementação não é adequada para uma app que possa ser publicada a partir de várias instâncias, porque a sessão registada numa instância pode diferir de outras instâncias. O pacote
gorilla/sessions
também inclui uma implementação baseada em cookies. No entanto, esta implementação requer a encriptação de cookies e o armazenamento de toda a sessão no cliente, em vez de apenas um ID de sessão, o que pode ser demasiado grande para algumas apps.
Objetivos
- Escreva a app.
- Execute a app localmente.
- Implemente a app no Cloud Run.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
- 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. -
Na Google Cloud consola, abra a app no Cloud Shell.
O Cloud Shell dá acesso à linha de comandos aos recursos da nuvem diretamente a partir do navegador. Abra o Cloud Shell no navegador e clique em Continuar para transferir o código de exemplo e mudar para o diretório da app.
-
No Cloud Shell, configure a CLI gcloud para usar o seu novo Google Cloud projeto:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Configurar o projeto
Na janela do terminal, clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Altere para o diretório que contém o código de exemplo:
cd golang-samples/getting-started/sessions
Compreender a app Web
Esta app apresenta saudações em diferentes idiomas para cada utilizador. Os utilizadores recorrentes são sempre recebidos no mesmo idioma.
Antes de a app poder armazenar preferências para um utilizador, precisa de uma forma de armazenar informações sobre o utilizador atual numa sessão. Esta app de exemplo usa o Firestore para armazenar dados de sessões.
A app começa por importar dependências, definir um tipo
apppara conter umsessions.Storee um modelo HTML, e definir a lista de saudações.Em seguida, a app define uma função
main, que cria uma nova instânciaapp, regista o controlador de índice e inicia o servidor HTTP. A funçãonewAppcria a instânciaappdefinindo os valoresprojectIDecollectionIDe analisa o modelo HTML.O controlador de índice obtém a sessão do utilizador, criando uma, se necessário. Às novas sessões é atribuído um idioma aleatório e uma contagem de visualizações de 0. Em seguida, a contagem de visualizações é aumentada em um, a sessão é guardada e o modelo HTML escreve a resposta.
O diagrama seguinte ilustra como o Firestore processa as sessões para a app do Cloud Run.
Eliminar sessões
Pode eliminar dados de sessões na Google Cloud consola ou implementar uma estratégia de eliminação automática. Se usar soluções de armazenamento para sessões, como o Memcache ou o Redis, as sessões expiradas são eliminadas automaticamente.
Execução local
Na janela do terminal, crie o ficheiro binário
sessions:go buildInicie o servidor HTTP:
./sessionsVeja a app no navegador de Internet:
Cloud Shell
Na barra de ferramentas do Cloud Shell, clique em Pré-visualização Web
e selecione Pré-visualizar na porta 8080.Máquina local
No navegador, aceda a
http://localhost:8080É apresentada uma de cinco saudações: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". O idioma muda se abrir a página num navegador diferente ou no modo de navegação anónima. Pode ver e editar os dados da sessão na Google Cloud consola.

Para parar o servidor HTTP, na janela do terminal, prima
Control+C.
Implementar e executar no Cloud Run
Pode usar o Cloud Run para criar e implementar uma app que é executada de forma fiável sob carga elevada e com grandes quantidades de dados.
- Implemente a app no Cloud Run:
gcloud run deploy firestore-tutorial-go
--source . --allow-unauthenticated --port=8080
--set-env-vars=GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID - Visite o URL devolvido por este comando para ver como os dados da sessão persistem entre carregamentos de páginas.
A saudação é agora fornecida por um servidor Web em execução numa instância do Cloud Run.
Depurar a app
Se não conseguir estabelecer ligação à sua app do Cloud Run, verifique o seguinte:
- Verifique se os comandos de implementação foram concluídos com êxito e não
apresentaram erros.
gcloudSe ocorreram erros (por exemplo,message=Build failed), corrija-os e tente implementar a app Cloud Run novamente. Na Google Cloud consola, aceda à página Explorador de registos.
Aceda à página do explorador de registos
Na lista pendente Recursos selecionados recentemente, clique em Aplicação do Cloud Run e, de seguida, clique em Todos os module_id. É apresentada uma lista de pedidos de quando visitou a sua app. Se não vir uma lista de pedidos, confirme que selecionou Todos os module_id na lista pendente. Se vir mensagens de erro impressas na Google Cloud consola, verifique se o código da sua app corresponde ao código na secção sobre como escrever a app Web.
Certifique-se de que a API Firestore está ativada.
Limpar
Elimine o projeto
- 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.
Elimine a instância do 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.
- Para eliminar a versão da app, clique em Eliminar.
O que se segue?
- Experimente os tutoriais de funções do Cloud Run.
- Saiba mais sobre o Cloud Run.
- Experimente o Cloud Run, que lhe permite executar contentores sem estado num ambiente totalmente gerido ou no seu próprio cluster do Google Kubernetes Engine.