视频

了解更多信息
这篇博文中,你将了解如何集成 AWS Lambda 和 Redis Enterprise Cloud。使用示例电影数据库应用程序,你将发现如何构建和部署两个 Lambda 函数,一个在 Node.js 中,另一个在 Python 中。这两个 Lambda 函数用于与 Redis 数据库交互以进行插入、更新、删除和查询。该应用程序使用 RediSearch API,它提供丰富的查询和搜索功能。无服务器 使用 AWS Lambda,符合朝微服务架构发展的趋势,因为它允许开发人员将业务“服务”的范围缩小成一个小项目,可以使用他们选择的编程语言进行实现。要了解更多信息,请观看下面的视频,并继续阅读快速概览 AWS Lambda,并深入了解如何使用 Redis Enterprise Cloud 和 Lambda 构建应用程序
如果你不熟悉 AWS Lambda - 该公司的无服务器计算运行时,也称为函数即服务 (FaaS) - 以下是你需要了解的基础知识。(Lambda 专家可以直接跳到下一部分。)AWS Lambda 允许应用程序根据特定事件按需运行函数,这使其成为构建事件驱动架构 (EDA) 应用程序的好方法。完全由 AWS 管理的 AWS Lambda 函数可以使用各种 编程语言 创建。也许 AWS Lambda 最好的部分是开发人员通常不需要完全了解应用程序生命周期即可使用它。
可以使用多种不同方法调用 AWS Lambda:直接从 AWS 控制台,使用其他 AWS 服务的事件,例如 SNS、SQS 或 Kinesis,甚至来自 AWS 控制台、CloudWatch 或 S3 事件。在我们的示例电影数据库应用程序中,Lambda 函数将使用 HTTP REST 端点调用,这是使用 AWS API 网关 完成的。 (你可以在 文档 中找到有关 AWS Lambda 函数调用的更多信息。)
AWS Lambda HTTP 执行过程
具体来说,通过 HTTP 的请求会路由到 AWS 的 API 网关管理工具,它会解析主体、标头和参数,然后使用此有效负载触发我们的 Lambda 函数
作为一名开发者,您只需编写代码来公开 REST 终端节点,并配置部署,以在 AWS API 网关中公开它。(我们将在下一节讨论我们的示例电影数据库应用程序时进一步讨论此内容。)
无服务器应用程序中的状态和数据管理
AWS Lambda 是一个无状态环境。但是,在许多应用程序中,您仍然希望在服务或调用之间共享状态,Redis 可以提供帮助。对于简单的状态管理,AWS 开发者通常使用 ElastiCache,但许多应用程序需要的不只是状态管理,它们还需要持久性、丰富的数据、高性能和查询模式。Redis Enterprise Cloud 在 AWS 上提供受全面管理的服务(还支持 Google Cloud 和 Microsoft Azure)。
现在我们可以查看我们的示例电影数据库应用程序,了解使用 Redis Enterprise Cloud 和 AWS Lambda 构建应用程序的关键步骤。
该应用程序使用 RediSearch 入门教程 中记录的数据集,其中包含一个由 Redis 哈希构成的电影目录。如下图所示,前端使用 Vue.js 构建,它调用 REST 终端节点来
如上所述,该应用程序为数据存储利用了 AWS API 网关、AWS Lambda 和 Redis Enterprise Cloud。此外,Python 服务使用 AWS 密钥管理服务 来存储和加密 Redis 数据库密码。
要开始使用,您需要一些先决条件
在您组装好所有内容后,让我们了解一下安装和运行示例应用程序的过程。
步骤 1:获取 Redis Enterprise Cloud 数据库信息
如果您尚未在 Redis Enterprise Cloud 上创建数据库,请使用我们的 Redis 模块入门 指南中的信息进行创建。
连接至 Redis Enterprise Cloud 时,可以在 Web 控制台中找到数据库连接信息;务必将模块“RediSearch 2”添加到数据库。
连接 Lambda 函数到 Redis 数据库,需要以下属性
步骤 2:从 GitHub 获取项目
将代码库克隆到本地环境,并将其移动到项目目录
> git clone https://github.com/redis-developer/aws-redis-cloud-demo.git > cd aws-redis-cloud-demo
此处显示项目目录结构
aws-redis-cloud-demo ├── README.md ├── front-end => Vue.js project │ ├── .env.development => to set the Lambda URLs in dev mode │ ├── .env.production => to set the Lambda URLs in production mode │ ├── ... │ └── vue.config.js │ └── ... ├── movie-comments-microservice => The Python, comments service │ ├── .chalice │ │ └── config.json => Lambda & Service configuration │ ├── app.py │ ├── chalicelib => Contains application code and lib │ │ └── …. │ ├── readme.md │ └── requirements.txt └── movies-list-microservice => The Node.js, movie service ├── import_movies.redis => Dataset file ├── ... ├── serverless.yml => Lambda & Service configuration ├── src │ └── ... └── ...
步骤 3:将电影数据库数据集导入您的应用程序
文件 aws-redis-cloud-demo/movies-list-microservice/import_movies.redis 包含将电影插入数据库的所有 Redis 命令。使用的命令是
要导入数据集,请打开终端并运行以下命令
> export REDISCLI_AUTH=<YOUR_DB_PASSWORD> > redis-cli -h redis-18541.xxx.xxxx.xxx.cloud.redis.com \ -p 18541 < movies-list-microservice/import_movies.redis
步骤 4:配置应用程序,以使用您的 Redis Enterprise Cloud 实例
在测试应用程序之前,您必须使用 Redis Enterprise Cloud 数据库实例配置 Node.js 和 Python 服务。打开以下文件
然后设置 Redis 主机、端口和密码:(REDIS_HOST, REDIS_PORT, REDIS_PASSWORD)
步骤 5:构建并运行电影微服务(Node.js)
按照此处列出的步骤构建并运行项目。(您还可以在项目的 自述文件中 找到所有信息。)
> npm install -g serverless
2. 进入 movies-list-microservice 目录
> cd movies-list-microservice
3. 安装依赖项
> npm install
4. 在本地运行 Lambda 函数
> npm start
5. 通过向 REST 服务发起浏览器调用来测试服务:http://localhost:3000/api/movies/1
6. 通过运行以下命令将函数部署到 AWS 环境,将服务部署到 AWS
> serverless deploy ................................ Serverless: Stack update finished... Service Information service: movies-list-microservice stage: api region: us-east-1 stack: movies-list-microservice-api resources: 33 api keys: None endpoints: GET - https://<xxx>.execute-api.<reg>.amazonaws.com/api/movies/search GET - https://<xxx>.execute-api.<reg>.amazonaws.com/api/movies/group_by/{field} GET - https://<xxx>.execute-api.<reg>.amazonaws.com/api/movies/{id} POST - https://<xxx>.execute-api.<reg>.amazonaws.com/api/movies/{id} functions: listMovies: movies-list-microservice-api-listMovies searchMovies: movies-list-microservice-api-searchMovies getMovie: movies-list-microservice-api-getMovie saveMovie: movies-list-microservice-api-saveMovie layers: None
7. 通过将浏览器指向 https://<xxx>.execute-api.<reg>.amazonaws.com/api/movies/1 来测试 API
注意:如果您收到错误,请查看 AWS CloudWatch 中的函数日志,以查看发生了什么错误。
详细了解代码
步骤 6:构建并运行评论微服务 (Python)
以下是构建并运行该项目的操作步骤。(你还可以从该项目的 自述文件中 找到所有信息。)
> cd movie-comments-microservice > python3 -m venv chalice-env > source chalice-env/bin/activate
2. 安装依赖项
> pip install -r requirements.txt
3. 设置 AWS 环境,运行以下命令并配置你的 ID 和密钥
> aws configure AWS Access Key ID [None]: ****************ABCD AWS Secret Access Key [None]: ****************abCd Default region name [None]: us-west-2 Default output format [None]:
4. 部署服务到 AWS,通过运行以下命令把函数部署到你的 AWS 环境
> chalice deploy Reusing existing deployment package. Updating policy for IAM role: movie-comments-microservice-dev Creating lambda function: movie-comments-microservice-dev Creating Rest API Resources deployed: - Lambda ARN: arn:aws:lambda:us-east-1:11111111111:function:movie-comments-microservice-dev - Rest API URL: https://XXXXXXX.execute-api.us-east-1.amazonaws.com/api/
详细了解代码
可以选择将 Redis 数据库密码存储在AWS Key Management Service中,可以在项目 文档中找到配置步骤。
步骤 7:运行前端应用程序
> cd front-end > npm install
2. 编辑 .env.development 文件以设置电影和评论服务的 URL
VUE_APP_MOVIES_SERVICE=https://<xxx>.execute-api.<reg>.amazonaws.com/api VUE_APP_COMMENTS_SERVICE=https://<xxx>..execute-api.<reg>.amazonaws.com/api
3. 运行应用程序
> npm run serve
4. 打开浏览器,转到 http://localhost:8084
现在您可以在应用程序中导航、更新和搜索电影,以及添加/删除评论。
可以选择使用 S3 和 CloudFront 将 Vue 应用程序部署到 AWS 环境中,并将其公开提供给您的用户。项目 文档 中对此进行了说明。
使用 AWS Lambda 和 Redis Enterprise Cloud 可简化服务的部署。使用 Redis Enterprise Cloud 和 RediSearch,您可以轻松使用值来查询 Redis 数据,从而使用 Redis 作为您服务的主要数据库。
Redis Enterprise Cloud 与 Redis 兼容,让您可以轻松移植您现有的 Redis 部署,包括 OSS 和托管服务。您只需要更改连接参数(如数据库端点)。有多种方法可以执行实时移植,包括
除了RediSearch外,Redis Enterprise Cloud 允许您使用其他很有前景的数据模型,例如图形、JSON、时间序列和布隆过滤器,并提供多种在生产环境中至关重要的其他数据库功能,包括高可用性、可扩展性、持久性、安全和主动主动地理分布。
想了解更多信息?查看我们的AWS re:Invent 主页并阅读以下教程和博客文章