Существует много способов управлять сеансами пользователей в веб-приложениях, от простых файлов cookie до распределенных баз данных для пар «ключ — значение», в том числе локальное кэширование на сервере. Сохранение данных сеансов на веб-сервере, который отвечает на конкретный запрос, может показаться удобным из-за отсутствия сетевых задержек при доступе к этим данным. Но основным недостатком здесь будет особая осторожность, которую придется соблюдать при маршрутизации запросов, чтобы каждый пользователь взаимодействовал только с одним и всегда с одним и тем же сервером. Еще один недостаток — утрата всех данных сеансов при отключении сервера. Распределенная база данных в памяти для пар «ключ — значение» позволяет решить обе эти проблемы, жертвуя лишь внесением небольшой сетевой задержки. Хранение всех данных сеансов в файлах cookie неплохо решает эту задачу в большинстве случаев, но данные сеансов лучше хранить в серверной части, если они могут быть конфиденциальными.

Узнайте, как использовать Amazon ElastiCache for Redis в качестве распределенного кэша для управления сеансами. Вы также получите рекомендации по настройке узлов ElastiCache и управлению сеансами для приложения.

Узел Amazon ElastiCache, создаваемый в этом учебном пособии, может использовать уровень бесплатного пользования AWS.

Время: 120 минут

Стоимость: доступно для уровня бесплатного пользования

Сценарии использования: хранилище сеансов, кэширование сеансов, обеспечение высокой доступности, приложения реального времени

Продукты: Amazon ElastiCache for Redis, уровень бесплатного пользования AWS, Amazon EC2

Целевая аудитория: разработчики

Уровень: начинающий

Последнее обновление: 25 июля 2019 г.

* Предполагается, что вы будете использовать рекомендуемые конфигурации на протяжении всего учебного курса и завершите работу всех ресурсов в течение 2 часов.

** Аккаунты, созданные в течение последних 24 часов, могут еще не иметь доступа к ресурсам, необходимым для выполнения этого проекта.

Время выполнения: 20 минут

Это учебное пособие демонстрирует ряд механизмов на конкретных примерах, созданных на языке Python и микроплатформе веб-разработки Flask. Мы надеемся, что у вас не возникнет проблем с переносом этого кода на любой другой язык.

Чтобы пройти обучение, вам потребуется доступ к инстансу EC2. Если у вас его еще нет, подготовьте его по этим инструкциям.

Убедитесь, что группа безопасности для этого инстанса допускает входящие TCP-подключения по порту 5000.

Обеспечив доступ к инстансу EC2, выполните следующие команды:

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

Это действие запускает приложение Flask на порту 5000. Если сервер не встретит никаких ошибок, вы сможете войти в приложение из командной строки на этом инстансе EC2, выполнив следующую командную строку:

syntax: shell

$ curl http://127.0.0.1:5000/

Если все пройдет нормально, вы сможете получить общедоступный IP-адрес инстанса EC2 и попытаться обратиться к веб-приложению с другого компьютера.

Предварительные условия

Чтобы открыть приложение в веб-браузере, скопируйте общедоступное DNS-имя используемого инстанса EC2 и добавьте к нему номер порта 5000. Например, для указанного на снимке экрана адреса будет использоваться следующий URL-адрес: «http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/».

Теперь вы готовы приступить к работе с учебным пособием.