Este tutorial mostra como lidar com sessões no Cloud Run.
Muitos aplicativos precisam gerenciar sessões de autenticação e preferências do usuário.
O pacote Gorilla Web Toolkit
sessions vem com uma implementação baseada no sistema de arquivos para executar esta
função. No entanto, essa implementação não é adequada para um aplicativo que pode ser veiculado de várias instâncias, porque a sessão gravada em uma instância pode ser diferente nas outras. O
gorilla/sessions
pacote também vem com uma implementação baseada em cookies. No entanto, essa implementação exige a criptografia de cookies e o armazenamento de toda a sessão no cliente, em vez de apenas um ID da sessão, que pode ser muito grande para alguns aplicativos.
Objetivos
- Gravar o aplicativo.
- Executar o aplicativo localmente.
- Implantar o aplicativo no Cloud Run.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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
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.-
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
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.-
No Google Cloud console do, abra o app no Cloud Shell.
O Cloud Shell oferece acesso por linha de comando aos seus recursos de nuvem diretamente no navegador. Abra o Cloud Shell no navegador e clique Continuar para fazer o download do exemplo de código e mudar para o diretório de app.
-
No Cloud Shell, configure a CLI gcloud para usar
seu novo Google Cloud projeto:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Como configurar o projeto
Na janela do terminal, clone o repositório do app de exemplo em sua máquina local:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Acesse o diretório que contém o exemplo de código:
cd golang-samples/getting-started/sessions
Como entender o app da Web
Esse aplicativo exibe saudações em idiomas diferentes para cada usuário. Os usuários retornantes são sempre recebidos no mesmo idioma.
Para que o app possa armazenar as preferências de um usuário, você precisa de uma maneira de armazenar informações sobre o usuário atual em uma sessão. Este aplicativo de amostra usa o Firestore para armazenar dados da sessão.
O aplicativo inicia importando dependências, definindo um tipo
apppara conter umsessions.Storee um modelo HTML e definindo a lista de saudações.Em seguida, o aplicativo define uma função
main, que cria uma nova instânciaapp, registra o gerenciador de índice e inicia o servidor HTTP. A funçãonewAppcria a instânciaappdefinindo os valoresprojectIDecollectionIDe analisa o modelo HTML.O gerenciador de índice obtém a sessão do usuário, criando uma, se necessário. As novas sessões recebem um idioma aleatório e uma contagem de visualização de zero. Em seguida, a contagem de visualizações é aumentada em um, a sessão é salva e o modelo HTML grava a resposta.
O diagrama a seguir ilustra como o Firestore gerencia sessões para o aplicativo Cloud Run.
Como excluir sessões
É possível excluir dados da sessão no Google Cloud console ou implementar uma estratégia de exclusão automática. Se você usar soluções de armazenamento para sessões como Memcache ou Redis, as sessões expiradas serão excluídas automaticamente.
Como executar no local
Na sua janela de terminal, crie o binário
sessions:go buildInicie o servidor HTTP:
./sessionsVeja seu app no navegador da Web:
Cloud Shell
Na barra de ferramentas do Cloud Shell, clique em Visualização da Web
e selecione Visualizar na porta 8080.Máquina local
No navegador, acesse
http://localhost:8080Você verá uma das cinco saudações: "Hello World"," "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". O idioma será alterado se você abrir a página em um navegador diferente ou no modo de navegação anônima. Veja e edite os dados da sessão no Google Cloud console.

Para interromper o servidor HTTP, pressione
Control+Cna janela do terminal.
Como implantar e executar no Cloud Run
Você pode usar o Cloud Run para criar e implantar um aplicativo que seja executado de forma confiável sob carga pesada e com grandes quantidades de dados.
- Implante o 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 retornado por este comando para ver como os dados da sessão persistem entre o carregamento da página.
A saudação agora é entregue por um servidor da Web em execução em uma instância do Cloud Run.
Como depurar o aplicativo
Se você não conseguir se conectar ao seu aplicativo Cloud Run, verifique o seguinte:
- Verifique se os comandos de implantação
gcloudforam concluídos com êxito e não geraram erros. Se houver erros (por exemplo,message=Build failed), corrija-os e tente implantar o aplicativo Cloud Run novamente. No Google Cloud console do, acesse a página Análise de registros.
Acessar a página Análise de registros
Na lista suspensa Recursos selecionados recentemente , clique em Aplicativo Cloud Run e, em seguida, clique em Todos os module_id. Você verá uma lista de solicitações de quando visitou seu aplicativo. Caso contrário, verifique se você selecionou Todos os module_id na lista suspensa. Se você vir mensagens de erro impressas no Google Cloud console, verifique se o código do seu aplicativo corresponde ao código na seção sobre como gravar o app da Web.
Verifique se a API do Cloud Firestore está ativada.
Limpar
Excluir o projeto
- No Google Cloud console, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.
Excluir a instância do Cloud Run
- No Google Cloud console do, acesse a página Versões do App Engine.
- Marque a caixa de seleção da versão não padrão do app que você quer excluir.
- Para excluir a versão do app, clique em Excluir.
A seguir
- Confira os tutoriais de funções do Cloud Run.
- Saiba mais sobre o Cloud Run.
- Teste o Cloud Run, que permite executar contêineres sem estado em um ambiente totalmente gerenciado ou em seu próprio cluster do Google Kubernetes Engine.