openfunction
启用 openfunction
插件后,该插件会终止对已配置 URI 的请求,并代表客户端向 OpenFunction 的 function 发起一个新的请求,然后 openfunction
插件会将响应信息返回至客户端。
属性
注意
timeout
字段规定了 OpenFunction function 的最大执行时间,以及 APISIX 中 HTTP 客户端的请求超时时间。
因为 OpenFunction function 调用可能会耗费很长时间来拉取容器镜像和启动容器,如果 timeout
字段的值设置太小,可能会导致大量请求失败。
在使用 openfunction
插件之前,你需要通过以下命令运行 OpenFunction。详情参考 。
你可以参考 创建函数。构建函数时,你需要使用以下命令为容器仓库生成一个密钥,才可以将函数容器镜像推送到容器仓库 ( 例如 Docker Hub 或 Quay.io)。
启用插件
你可以通过以下命令在指定路由中启用该插件:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
"uri": "/hello",
"plugins": {
"openfunction": {
"authorization": {
"service_token": "test:test"
}
}
}
}'
使用 curl
命令测试:
正常返回结果:
hello, test!
配置路径转发
重要
路由上配置的 uri
必须以 *
结尾,此功能才能正常工作。APISIX 路由是严格匹配的, 表示此 URI 的任何子路径都将匹配到同一路由。
下面的示例配置了此功能:
现在,对路径 hello/123
的任何请求都将调用 OpenFunction 插件设置的对应的函数,并转发添加的路径:
禁用插件
当你需要禁用 openfunction
插件时,可以通过以下命令删除相应的 JSON 配置,APISIX 将会自动重新加载相关配置,无需重启服务:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"methods": ["GET"],
"uri": "/hello",
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'