利用 Kong 及 AWS Lambda 构建无服务器的后端逻辑

阅读数:22 2019 年 11 月 13 日 08:00

利用Kong及AWS Lambda构建无服务器的后端逻辑

Kong 是一个开源的 API GW 及微服务管理层,基于 Nginx, Cassandra 或者 PostgreSQL 构建,最初由 Mashape 开发,用于为其 API Marketplace 管理超过 15,000 个 API 和微服务,并于 2015 年开源。Kong 具有如下优点:

  1. 可扩展性:通过简单地添加更多的机器,Kong 可以轻松地水平缩放,这意味着您的平台可以处理几乎任何负载,同时保持低延迟。
  2. 模块化:可以通过添加新的插件来扩展,并通过 RESTful Admin API 轻松配置所有插件。
  3. 平台无关性:Kong 可以运行在任何地方,包括本地数据中心及公有云,支持物理机,虚机及容器部署。

目前 Kong 的最新版本为 0.10.2,支持的插件如下:

  • 认证:Basic Authentication, Key Authentication, OAuth2.0 Authentication, OAuth 2.0 Introspection, HMAC Authentication, JWT, LDAP Authentication
  • 安全:ACL, CORS, Dynamic SSL, IP Restriction, Bot Detection
  • 流控:Rate Limiting, Response Rate Limiting, Request Size Limiting
  • 无服务器架构:AWS Lambda, OpenWhisk
  • 分析监控:Galileo, Datadog, Runscope
  • 内容转换:Request Transformer, Response Transformer, Correlation ID
  • 日志:TCP/UDP/HTTP Logging, File Logging, Syslog, StatsD, Loggly

利用Kong及AWS Lambda构建无服务器的后端逻辑

通过 AWS Lambda 插件,Kong 可以作为一个统一的 API 前端,接收用户的请求,并调用不同的 lambda 函数做相关的处理,最后将结果返回给客户端,目前 Lambda 插件支持如下 region:

us-east-1, us-east-2, ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, eu-central-1, eu-west-1

Kong 的安装

Kong 支持多种安装方式,对于在 AWS 上运行 Kong 的情况,主要有三种:

  1. 通过 marketplace 安装,此安装方式会在一台 EC2 上同时安装 Kong 及其存储数据库 Cassandra,适合单机部署或者测试环境
  2. 通过 CloudFormation 安装,CloudFormation 安装方式目前支持如下 region,可以通过配置选择存储数据库的类型 Cassandra 还是 PostgreSQL,或者不由 CloudFormation 创建存储数据库利用Kong及AWS Lambda构建无服务器的后端逻辑
  3. 通过 yum 在 EC2 上安装

利用Kong及AWS Lambda构建无服务器的后端逻辑

本文主要讲解第三种方式的安装过程,安装 Kong 0.10.1 版本

第一步 配置 Kong 的数据存储

Kong 支持两种 datastore:Cassandra 和 PgSQL,方便起见,这里利用 AWS RDS 创建 PgSQL 作为数据存储

利用Kong及AWS Lambda构建无服务器的后端逻辑

注意事项:

  1. RDS 的安全组需要放行 5432 端口
  2. 记录 RDS 创建过程中设置的用户名,密码及数据库名

比如:username/password:ivan/ivan

DB:kong

第二步 安装配置 Kong (Amazon Linux)

yum update –y

wget https://github.com/Mashape/kong/releases/download/0.10.1/kong-0.10.1.aws.rpm

yum install kong-0.10.1.aws.rpm –nogpgcheck

cp /etc/kong/kong.conf.default /etc/kong/kong.conf

vim /etc/kong/kong.conf,

修改配置如下

database = postgres

pg_host = postgre-kong.XXXXXXXX.rds.cn-north-1.amazonaws.com.cn

pg_port = 5432

pg_user = ivan

pg_password = ivan

pg_database = kong

简单测试

利用Kong及AWS Lambda构建无服务器的后端逻辑

第三步 创建 AMI,利用 ELB,Autoscaling Group 构建高可用架构

注意,如果 EC2 上已经启动过 kong,那么会将生成的 id 也打包进入 AMI,导致基于 AMI 生成的多台机器的 id 相同,从而无法建立集群,创建 AMI 前需要删除 id

rm –f /usr/local/kong/serf/serf.id

参考:

https://github.com/Mashape/kong/issues/1751

利用Kong及AWS Lambda构建无服务器的后端逻辑

检查集群状态

利用Kong及AWS Lambda构建无服务器的后端逻辑

第四步 创建 Lambda 函数并且测试

利用Kong及AWS Lambda构建无服务器的后端逻辑

利用Kong及AWS Lambda构建无服务器的后端逻辑

第五步 配置 Kong API GW 并调用 Lambda

5.1. 配置 API

利用Kong及AWS Lambda构建无服务器的后端逻辑

测试

利用Kong及AWS Lambda构建无服务器的后端逻辑

利用Kong及AWS Lambda构建无服务器的后端逻辑

利用Kong及AWS Lambda构建无服务器的后端逻辑

5.2. 配置 Lambda 插件

利用Kong及AWS Lambda构建无服务器的后端逻辑测试

利用Kong及AWS Lambda构建无服务器的后端逻辑 利用Kong及AWS Lambda构建无服务器的后端逻辑

第六步 配置启用额外的插件

6.1 为 API 开启 key 认证

利用Kong及AWS Lambda构建无服务器的后端逻辑

配置用户并绑定 key

利用Kong及AWS Lambda构建无服务器的后端逻辑

测试

利用Kong及AWS Lambda构建无服务器的后端逻辑

6.2 为 API 限速

利用Kong及AWS Lambda构建无服务器的后端逻辑

6.3 基于 IP 地址的过滤

利用Kong及AWS Lambda构建无服务器的后端逻辑

利用Kong及AWS Lambda构建无服务器的后端逻辑

利用Kong及AWS Lambda构建无服务器的后端逻辑

作者介绍

利用Kong及AWS Lambda构建无服务器的后端逻辑

余骏,AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 之前,他在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/building-a-server-free-back-end-logic-using-kong-and-aws-lambda/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布