Serverless功能 - 玩转Kong插件

在访问阶段动态运行Lua代码。

启动Serverless Functions

1、在服务上启用插件

$ curl -X POST http://kong:8001/services/{service}/plugins \
    --data "name=serverless-functions"  \
    --data "config.functions=[]"

2、同理,也可以在路由、API上启动。

3、备注:
config.functions: 要在访问阶段按顺序缓存和运行Lua代码数组。

插件名称

无服务器函数作为两个独立的插件出现。每一个都在插件链中以不同的优先级运行。

  • pre-function : 在访问阶段运行其他插件之前运行。
  • post-function : 在访问阶段在其他插件之后运行。

示例

1、在Kong创建一个服务:

$ curl -i -X  POST http://localhost:8001/services/ \
  --data "name=plugin-testing" \
  --data "url=http://httpbin.org/headers"

2、向服务添加一个路由:

$ curl -i -X  POST http://localhost:8001/services/plugin-testing/routes \
  --data "paths[]=/test"

3、创建一个名为`custom-auth.lua``的文件,内容如下:

-- 获取请求头部列表
local custom_auth = kong.request.get_header("x-custom-auth")

-- 如果我们没有自定义头部
if not custom_auth then
  return kong.response.exit(401\, "Invalid Credentials")
end

-- 从请求中删除自定义身份验证头部
kong.service.request.clear_header('x-custom-auth')

4、应用我们的Lua代码使用pre-function插件使用cURL文件上传:

$ curl -i -X POST http://localhost:8001/services/plugin-testing/plugins \
    -F "name=pre-function" \
    -F "config.functions=@custom-auth.lua"

5、测试我们的lua代码会在没有报头时终止请求:

curl -i -X GET http://localhost:8000/test

HTTP/1.1 401 Unauthorized
...
"Invalid Credentials"

穿梭机:开源API网关系统(Kong教程)入门到精通

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,937评论 0 38
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,687评论 25 708
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,048评论 2 89
  • 你来便是春天 文/与你共舞 从上次离别开始 我便天天期盼着 与你再次相见 没有你的日子 我的生活都是冬天 你来,春...
    与你共舞0618阅读 307评论 0 0