Há diversas formas de gerenciar sessões de usuário em aplicativos web, seja apenas com cookies ou com bancos de dados de chave/valor distribuídos, inclusive armazenamento em cache de servidor-local. Pode parecer conveniente armazenar dados da sessão no servidor web em resposta a determinada solicitação, pois o acesso aos dados não gera latência da rede. A principal desvantagem é que solicitações precisam ser roteadas com cuidado para que cada usuário interaja com apenas um servidor. Outra desvantagem é que, quando o servidor cai, todos os dados da sessão são perdidos. Um banco de dados de chave/valor distribuído e de memória pode resolver os dois problemas, pagando um preço baixo de uma pequena latência de rede. Quase sempre basta armazenar todos os dados da sessão em cookies; se pretende armazenar dados confidenciais, é preferível utilizar sessões do servidor.

Neste tutorial, saiba como usar o Amazon ElastiCache for Redis como um cache distribuído para gerenciamento de sessões. Você também aprenderá as melhores práticas para configurar nós do ElastiCache e como tratar as sessões do seu aplicativo.

O nó do Amazon ElastiCache criado neste tutorial está qualificado para o nível gratuito da AWS.

Tempo: 120 minutos

Custo: qualificado para o nível gratuito

Caso de uso: armazenamento de sessão, armazenamento em cache de sessão, alta disponibilidade, aplicativo em tempo real

Produtos: Amazon ElastiCache for Redis, Nível gratuito da AWS, Amazon EC2

Público: desenvolvedores

Nível: iniciante

Última atualização: 25 de julho de 2019

*Esta estimativa presume que você siga as configurações recomendadas em todo o tutorial e encerre todos os recursos em até 2 horas.

**Pode ser que as contas criadas nas últimas 24 horas ainda não tenham acesso aos recursos exigidos para este projeto.

Tempo para a conclusão: 20 minutos

Este tutorial ilustra alguns mecanismos com exemplos escritos em Python e a microestrutura Flask para desenvolvimento da web. Esperamos que seja fácil traduzir o código para o idioma da sua preferência.

Para concluir este tutorial, você precisa acessar uma instância do EC2. Se você ainda não tiver uma em execução, siga estas instruções para provisioná-la.

Certifique-se de que o grupo de segurança dessa instância permita a entrada de conexões TCP na porta 5000.

Depois de obter acesso à instância do EC2, execute os seguintes comandos:

syntax: shell

$ sudo yum install git
$ sudo yum install python3
$ sudo pip3 install virtualenv
$ git clone https://github.com/aws-samples/amazon-elasticache-samples/
$ cd amazon-elasticache-samples/session-store
$ virtualenv venv
$ source ./venv/bin/activate
$ pip3 install -r requirements.txt
$ export FLASK_APP=example-1.py
$ export SECRET_KEY=some_secret_string
$ flask run -h 0.0.0.0 -p 5000 --reload

Um aplicativo Flask será iniciado na porta 5000. Se o servidor não relatar erros, você poderá acessar o aplicativo na linha de comando na instância do EC2 com a seguinte linha:

syntax: shell

$ curl http://127.0.0.1:5000/

Se funcionar, você poderá obter o endereço IP público da instância do EC2 e tentar acessar o aplicativo web a partir do seu computador.

Pré-requisito

Para acessar o aplicativo do seu navegador, copie o nome do DNS Público da instância do EC2 e anexe o número de porta 5000. Por exemplo, com o endereço fornecido na captura de tela, o URL deve ser http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/.

Agora está tudo pronto para começar o tutorial.