80 lines
2.3 KiB
Markdown
80 lines
2.3 KiB
Markdown
# Binary Environment Examples
|
|
|
|
The `binary` runtime is a go server that uses a subprocess to invoke executables or execute shell scripts.
|
|
|
|
For more info read the [environment README](../../environments/binary/README.md).
|
|
|
|
## Requirements
|
|
|
|
First, set up your fission deployment with the binary environment.
|
|
|
|
```bash
|
|
fission env create --name binary-env --image fission/binary-env
|
|
```
|
|
|
|
## Example Usage
|
|
|
|
### hello.sh
|
|
`hello.sh` is an very basic shell script that returns `"Hello, World!"`.
|
|
|
|
```bash
|
|
# Upload the function to fission
|
|
fission function create --name hello --env binary-env --code hello.sh
|
|
|
|
# Map /hello to the hello function
|
|
fission route create --method GET --url /hello --function hello
|
|
|
|
# Run the function
|
|
curl http://$FISSION_ROUTER/hello
|
|
```
|
|
|
|
This should return a HTTP response with the body `Hello World!`
|
|
|
|
### echo.sh
|
|
`echo.sh` shows the the use of STDIN to read the request body, echoing the input back in the response.
|
|
|
|
```bash
|
|
# Upload the function to fission
|
|
fission function create --name echo --env binary-env --code echo.sh
|
|
|
|
# Map /hello to the hello function
|
|
fission route create --method POST --url /echo --function echo
|
|
|
|
# Run the function
|
|
curl -XPOST -d 'Echoooooo!' http://$FISSION_ROUTER/echo
|
|
```
|
|
This should return a HTTP response with the body `... Echoooooo!`.
|
|
|
|
|
|
### headers.sh
|
|
`headers.sh` shows the access to the environment variables that hold the HTTP headers, returning the set HTTP headers.
|
|
|
|
```bash
|
|
# Upload the function to fission
|
|
fission function create --name headers --env binary-env --code headers.sh
|
|
|
|
# Map /hello to the hello function
|
|
fission route create --url /headers --function headers
|
|
|
|
# Run the function
|
|
curl -H 'X-FOO: BAR' http://$FISSION_ROUTER/headers
|
|
```
|
|
This should return a HTTP response with the body `... Echoooooo!`.
|
|
|
|
### hello..go
|
|
This example shows the differences between using shell scripts and binaries. `hello.go` returns `Hello World!` + the
|
|
environment variables it received from the server.
|
|
|
|
```bash
|
|
# Build the function targeted at the right architecture
|
|
GOOS=linux GOARCH=386 go build -o hello-go-func hello.go
|
|
|
|
# Upload the function to fission
|
|
fission function create --name hello-go --env binary-env --code hello-go-func
|
|
|
|
# Map /hello to the hello function
|
|
fission route create --url /hello-go --function hello-go
|
|
|
|
# Run the function
|
|
curl -H 'X-GO: AWESOME!' http://$FISSION_ROUTER/hello-go
|
|
``` |