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.

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.