backstage-functions
v0.1.0
Published
Remote serverless code executor
Downloads
12
Readme
Backstage Functions
Backstage Functions is an Open Source Serverless Plataform able to store and execute JavaScript code.
Run local via Docker
Requirements
- Docker 1.12+
- Docker compose 1.8+
Download docker-compose.yml
mkdir functions
cd functions
curl 'https://raw.githubusercontent.com/backstage/functions/master/docker-compose.yml' > docker-compose.yml
Run
docker-compose up
Run local without Docker
Requirements
- Redis 3.0+
- NodeJS 6.6.0
Download the project
git clone https://github.com/backstage/functions.git
cd functions
Setup
make setup
Run
make run
How to use
Create function
function main(req, res) {
const name = (req.body && req.body.name) || "World"
res.send({ say: `Hello ${name}!` })
}
Send the function as curl to /functions/:namespace/:name
curl -i -XPUT http://localhost:8100/functions/example/hello-world \
-H 'content-type: application/json' \
-d '{"code":"function main(req, res) {\n const name = (req.body && req.body.name) || \"World\"\n res.send({ say: `Hello ${name}!` })\n}\n"}'
Run the function send a PUT
request to /functions/:namespace/:name/run
:
curl -i -H 'content-type: application/json' -XPUT http://localhost:8100/functions/example/hello-world/run
Results in something like:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 22
ETag: W/"16-soBGetwJPBLt8CqWpBQu+A"
Date: Tue, 11 Oct 2016 16:51:04 GMT
Connection: keep-alive
{"say":"Hello World!"}
If one pass an object at the request payload with name the payload is executed
curl -i -XPUT http://localhost:8100/functions/example/hello-world/run \
-H 'content-type: application/json' \
-d '{"name": "Pedro"}'
Results in something like:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 22
ETag: W/"16-Ino2/umXaZ3xVEhoqyS8aA"
Date: Tue, 11 Oct 2016 17:13:11 GMT
Connection: keep-alive
{"say":"Hello Pedro!"}