Skip to main content

Serverless

There are two serverless plugins available on our gateway service:

  • serverless-pre-function: This plugin runs at the start of a specified phase.
  • serverless-post-function: This plugin runs at the ending of a specified phase.

Attributes

NameTypeRequiredDefaultValid valuesDescription
phasestringNo["access"]["rewrite", "access", "header_filter", "body_filter", "log", "before_proxy"]Phase before or after which the serverless function is executed.
functionsarray[string]YesFunctions list executed sequentially.

Enable the plugin

curl https://adrsearche-us-east.photoniq.macrometa.io:9080/api/stargate/v1/routes  -H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"serverless-pre-function": {
"phase": "rewrite",
"functions" : ["return function() ngx.log(ngx.ERR, \"serverless pre function\"); end"]
},
"serverless-post-function": {
"phase": "rewrite",
"functions" : ["return function(conf, ctx) ngx.log(ngx.ERR, \"match uri \", ctx.curr_req_matched and ctx.curr_req_matched._path); end"]
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'

After configuring the plugin, you can make a request as shown below:

curl -i http://127.0.0.1:9080/index.html

You will find a message "serverless pre-function" and "match uri /index.html" in the error.log.

Delete Plugin

To remove the serverless Plugin, delete the corresponding JSON configuration from the Plugin configuration.