GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

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

2019 年 11 月 13 日

利用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



通过 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 创建存储数据库

  3. 通过 yum 在 EC2 上安装



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

第一步 配置 Kong 的数据存储

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



注意事项:


  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


简单测试



第三步 创建 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



检查集群状态



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



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

5.1.配置 API



测试





5.2.配置 Lambda 插件



测试




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

6.1 为 API 开启 key 认证



配置用户并绑定 key



测试



6.2 为 API 限速



6.3 基于 IP 地址的过滤





作者介绍



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


本文转载自 AWS 技术博客。


原文链接:


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


2019 年 11 月 13 日 08:00331

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

评论

发布
暂无评论
发现更多内容

为什么选择python

张鹤羽粑粑

28天写作 3月日更

Hello World!!!

小太阳

LeetCode题解:125. 验证回文串,双指针,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

JAVA中的I/O模型-多路复用

云流

Java 架构 计算机

如何快速的插入 100W数据到数据库,使用PreparedStatement 最快实现!

屈仁能

MySQL

Python 变量类型

依旧廖凯

28天挑战 3月日更

关于写东西的一点思考

道伟

28天写作

ARTS - Week 6

Khirye

Java LeetCode arts

FutureTask源码解析

徐海兴

多线程 Future future设计模式

Yarn日志聚合优化—摆脱HDFS依赖

笨小康

大数据 YARN

华为不养猪,小米没造车,“巨头错觉”是怎么来的?

脑极体

【20万大奖】参加APICloud3.0案例与AVM组件大赛,赢现金大奖

APICloud

开发者 前端开发 前端框架 APP开发 APICloud

如何带团队?

石云升

程序员成长 28天写作 职场经验 管理经验 3月日更

深读golang中map后思考和借鉴

ninetyhe

go 源码

Wireshark数据包分析学习笔记Day7

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

Nacos配置安全最佳实践

Robert Lu

nacos 配置中心

项目截图

赝品

2021最新快手面经主动分享:Java面试神技/技术知识集合(10个专题详细介绍)

比伯

Java 编程 架构 面试 程序人生

NewSQL分布式数据库,例如TIDB用K/V的底层逻辑

读字节

大数据 分布式 分布式存储 RocksDB TiDB

还不懂云数据库Redis是什么?快上车,一张图带你了解!

浪潮云

云数据库

价值感知:如何评价企业IT项目的价值?

boshi

价值传递 七日更 项目经验

一名优秀的女程序员是如何炼成的?我们跟爱奇艺的五位工程师姐姐聊了聊

爱奇艺技术产品团队

Python 基础语法

依旧廖凯

28天挑战 3月日更

引爆40亿播放的抖音春节道具,背后是怎样的技术?

字节跳动技术团队

前端开发:Vue项目中解决Emitted value instead of an instance of Error问题

三掌柜

vue.js 前端 3月日更

终于有人把 "高可用" 说清楚了

架构精进之路

3月日更

【笔记】第七周 第1课

Geek_娴子

已经整整10年了,经济学人分析日本福岛核泄漏事故带来的沉重影响

wbliu85

翻译:《实用的Python编程》04_04_Defining_exceptions

codists

Python

数字货币持币生息钱包系统开发搭建

薇電13242772558

区块链 数字货币

HashData携手中国移动 共筑通信技术数字化之路

HashData

数据库 解决方案

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