openfunction

启用 openfunction 插件后,该插件会终止对已配置 URI 的请求,并代表客户端向 OpenFunction 的 function 发起一个新的请求,然后 openfunction 插件会将响应信息返回至客户端。

属性

注意

timeout 字段规定了 OpenFunction function 的最大执行时间,以及 APISIX 中 HTTP 客户端的请求超时时间。

因为 OpenFunction function 调用可能会耗费很长时间来拉取容器镜像和启动容器,如果 timeout 字段的值设置太小,可能会导致大量请求失败。

在使用 openfunction 插件之前,你需要通过以下命令运行 OpenFunction。详情参考 。

你可以参考 创建函数。构建函数时,你需要使用以下命令为容器仓库生成一个密钥,才可以将函数容器镜像推送到容器仓库 ( 例如 Docker Hub 或 Quay.io)。

启用插件

你可以通过以下命令在指定路由中启用该插件:

  1. curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. "uri": "/hello",
  3. "plugins": {
  4. "openfunction": {
  5. "authorization": {
  6. "service_token": "test:test"
  7. }
  8. }
  9. }
  10. }'

使用 curl 命令测试:

正常返回结果:

  1. hello, test!

配置路径转发

openfunction - 图2重要

路由上配置的 uri 必须以 * 结尾,此功能才能正常工作。APISIX 路由是严格匹配的, 表示此 URI 的任何子路径都将匹配到同一路由。

下面的示例配置了此功能:

现在,对路径 hello/123 的任何请求都将调用 OpenFunction 插件设置的对应的函数,并转发添加的路径:

    禁用插件

    当你需要禁用 openfunction 插件时,可以通过以下命令删除相应的 JSON 配置,APISIX 将会自动重新加载相关配置,无需重启服务:

    1. curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    2. {
    3. "methods": ["GET"],
    4. "uri": "/hello",
    5. "upstream": {
    6. "type": "roundrobin",
    7. "nodes": {
    8. "127.0.0.1:1980": 1
    9. }
    10. }
    11. }'