Muitos aplicativos precisam de gerenciamento de sessões para autenticação e preferências do usuário. O ASP.NET Core vem com middleware para armazenar sessões em um cache distribuído.
O cache distribuído padrão do ASP.NET não é realmente distribuído. Ele armazena os dados da sessão na memória do servidor da Web. Quando apenas um servidor da Web está exibindo um site, essa estratégia é adequada. Mas quando muitos servidores da Web estão exibindo um site, os usuários do site podem experimentar erros e perda de dados.
Para evitar erros e perda de dados, um aplicativo ASP.NET precisa usar um cache distribuído que armazena dados em um repositório de dados persistente. Este tutorial mostra como gerenciar sessões no Cloud Run armazenando-as no Firestore e criptografando cookies com o Cloud Key Management Service.
Objetivos
- 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, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
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, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
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.-
Para criar um banco de dados do Firestore no modo nativo, conclua as seguintes etapas:
-
No Google Cloud console do, acesse a página Visualizador do Firestore.
Acessar o visualizador do Firestore - Na tela Selecione um modo do Firestore, clique em Selecione o modo nativo.
- Selecione um local para seu banco de dados do Firestore. Essa configuração de local é o local de recurso Google Cloud padrão para seu Google Cloud projeto . Esse local é usado para Google Cloud serviços no seu Google Cloud projeto que exigem uma configuração desse tipo, especificamente, o bucket padrão do Cloud Storage e o aplicativo do App Engine.
- Clique em Criar banco de dados.
-
No Google Cloud console do, acesse a página Visualizador do Firestore.
-
No Cloud Shell, abra o código-fonte do app.
Acessar o Cloud ShellO Cloud Shell oferece acesso por linha de comando aos seus Google Cloud recursos diretamente no navegador.
- Para fazer o download do exemplo de código e passar para o diretório do app, clique em Continuar.
-
No Cloud Shell, configure a CLI gcloud para usar seu novo Google Cloud projeto:
# Configure gcloud for your project gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo Google Cloud ID do projeto que você criou usando o Google Cloud console.A Google Cloud CLI é a principal maneira de interagir com seus Google Cloud recursos na linha de comando. Neste tutorial, você usa a CLI gcloud para implantar e monitorar seu app.
Examinar o código-fonte
O diagrama a seguir ilustra como o Firestore gerencia sessões para o aplicativo Cloud Run.
O método ConfigureServices no arquivo Startup.cs configura o aplicativo para usar o Cloud KMS para criptografia e o Cloud Storage para armazenar chaves criptografadas.
-
No Cloud Shell, clique em
para iniciar o editor e examinar o arquivo Startup.cs.
Configurar o Google Cloud projeto
-
No editor do Cloud Shell, edite o
appsettings.jsonarquivo e substitua as duas instâncias deYOUR-PROJECT-IDpor seu Google Cloud ID do projeto. Salve o arquivo. -
Crie um novo keyring do Cloud Key Management Service chamado
dataprotectionprovider:gcloud kms keyrings create dataprotectionprovider --location global
-
Crie uma nova chave do Cloud Key Management Service chamada
masterkey:gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption
-
Crie um bucket do Cloud Storage para armazenar as chaves criptografadas:
gcloud storage buckets create gs://PROJECT_ID-bucket
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.
Neste tutorial, o Cloud Run é usado para implantar o servidor.
No Cloud Shell, publique o aplicativo:
dotnet publish -c ReleaseUse o Cloud Build para criar um contêiner do Docker e publicar no Container Registry:
gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish
Execute o contêiner com o Cloud Run:
gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated
Anote o URL na saída:
Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving 100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
Para visualizar o aplicativo ao vivo, acesse o URL que você copiou da etapa anterior.
Como excluir sessões
É possível excluir dados de sessão no Google Cloud console ou implementar uma estratégia de exclusão automatizada. Se você usar soluções de armazenamento para sessões como Memcache ou Redis, as sessões expiradas serão excluídas automaticamente.
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. - Consulte o guia do Cloud Run para visualizar os registros.
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.