Create a HTTP Trigger

An HTTP trigger invokes a function when there is an HTTP request.

You can specify the relative URL and HTTP method for a trigger:

$ fission httptrigger create --url /hello --method GET --function hello
trigger '94cd5163-30dd-4fb2-ab3c-794052f70841' created

$ curl http://$FISSION_ROUTER/hello
Hello World!
FISSION_ROUTER is the externally-visible address of your Fission router service. For how to set up environment variable FISSION_ROUTER, see here

Also, we can create a trigger contains URL parameter by putting placeholders in value of --url flag.

$ fission httptrigger create --method GET \
    --url "/guestbook/messages/{id}" --function restapi-get

Since fission uses gorilla/mux as underlying URL router, you can write regular expression to filter out illegal API requests.

$ fission httptrigger create --method GET \
    --url "/guestbook/messages/{id:[0-9]+}" --function restapi-get
Learn how to access URL parameters in function to develop a REST API, please visit here

If you want to use Kubernetes Ingress for the HTTP Trigger, you can provide the --createingress flag and a hostname. If the hostname is not provided, it defaults to “*“, which indicates a wildcard host.

$ fission httptrigger create --url /hello --method GET --function hello --createingress --host
trigger '94cd5163-30dd-4fb2-ab3c-794052f70841' created

$ fission route list
NAME                                 METHOD HOST     URL      INGRESS FUNCTION_NAME
94cd5163-30dd-4fb2-ab3c-794052f70841 GET /hello   true    hello

Please note that for ingress to work, you will have to deploy an ingress controller in Kubernetes cluster. Kubernetes currently supports and maintains the following ingress controllers:

Other Ingress controllers exist, such as F5 networks and Kong.

Create a Time Trigger

Time-based triggers invoke functions based on time. They can run once or repeatedly. They’re specified using cron string specifications:

$ fission tt create --name halfhourly --function hello --cron "*/30 * * * *"
trigger 'halfhourly' created

You can also use a friendlier syntax such “@every 1m” or “@hourly”:

$ fission tt create --name minute --function hello --cron "@every 1m"
trigger 'minute' created

And you can list time triggers to see their associated function and cron strings:

$ fission tt list
halfhourly 0 30 * * * * hello
minute     @every 1m    hello

You can also use showschedule to show the upcoming schedule for a given cron spec. Use this to test your cron strings. And note that the server’s time is used to invoke functions, not your laptop’s time!

$ fission tt showschedule --cron "0 30 * * * *" --round 5
Current Server Time: 	2018-06-12T05:07:41Z
Next 1 invocation: 	2018-06-12T05:30:00Z
Next 2 invocation: 	2018-06-12T06:30:00Z
Next 3 invocation: 	2018-06-12T07:30:00Z
Next 4 invocation: 	2018-06-12T08:30:00Z
Next 5 invocation: 	2018-06-12T09:30:00Z

Create a Message Queue Trigger

A message queue trigger invokes a function based on messages from an message queue. Optionally, it can place the response of a function onto another queue.

NATS and Azure Storage Queue are supported queues:

$ fission mqt create --name hellomsg --function hello --mqtype nats-streaming --topic newfile --resptopic newfileresponse 
trigger 'hellomsg' created

You can list or update message queue triggers with fission mqt list, or fission mqt update.

Last modified October 28, 2019: Fix broken link (6d22d99)