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 Cloud de Confiance by S3NS:
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
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance 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.enable
permission. Learn how to grant roles. -
Na Cloud de Confiance 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 Cloud de Confiance 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
app
para conter umsessions.Store
e 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çãonewApp
cria a instânciaapp
definindo os valoresprojectID
ecollectionID
e 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 Cloud de Confiance 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 build
Inicie o servidor HTTP:
./sessions
Veja 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 Cloud de Confiance 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.
gcloud
Se ocorreram erros (por exemplo,message=Build failed
), corrija-os e tente implementar a app Cloud Run novamente. Na Cloud de Confiance 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 Cloud de Confiance 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 Cloud de Confiance 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 Cloud de Confiance 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.