在 Web 应用程序中管理用户会话的方法有多种,包括仅使用 Cookie、分布式键/值数据库,还包括服务器本地缓存。在响应给定请求的 Web 服务器中存储会话数据似乎很方便,因为访问数据不会引起网络延迟。主要缺点是必须小心地路由请求,以便每个用户只与一个服务器交互。另一个缺点是,一旦服务器停机,所有会话数据也将丢失。分布式内存中键/值数据库可以解决这两个问题,只不过要付出微小的代价:网络略有延迟。大多数情况下,将所有会话数据存储在 Cookie 中已足以满足要求;如果您计划存储敏感数据,最好使用服务器端会话。

在本教程中,您将学习如何将 Amazon ElastiCache for Redis 用作分布式缓存来进行会话管理。您还将学习配置 ElastiCache 节点的最佳实践,以及如何处理应用程序中的会话。

本教程中创建的 Amazon ElastiCache 节点可使用 AWS 免费套餐

时间:120 分钟

费用:免费套餐资格

使用案例:会话存储、会话缓存、高可用性、实时应用程序

产品:Amazon ElastiCache for Redis、AWS 免费套餐、Amazon EC2

受众:开发人员

等级:初级

上次更新日期:2019 年 7 月 25 日

*此估算值假定您在整个教程中遵循建议的配置,并在 2 小时内终止所有资源。

**过去 24 小时内创建的账户可能尚不具有访问此项目所需资源的权限。

所需时间:20 分钟

本教程通过用 Python 编写的几个示例和用于 Web 开发的 Flask 微框架说明一些机制。我们希望这些代码能很容易地转换为您选用的语言。

要完成本教程,您需要访问 EC2 实例。如果您尚未运行任何实例,请按照下面的说明预置一个。

确保该实例的安全组允许端口 5000 上的传入 TCP 连接。

访问 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

这将在端口 5000 上启动 Flask 应用程序。如果服务器没有报告任何错误,您应该能够在 EC2 实例中通过命令行访问应用程序,如下所示:

syntax: shell

$ curl http://127.0.0.1:5000/

如果一切正常,您现在应可以获取 EC2 实例的公有 IP 地址,并尝试从您的计算机访问 Web 应用程序。

先决条件

为了从浏览器访问应用程序,请复制 EC2 实例的公有 DNS 名称并附加端口号 5000。例如,根据屏幕截图中的地址,URL 为 http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/。

现在您已准备就绪,可以开始学习教程了。