Go Builder (@now/go)
This builder takes in a Go program that defines a singular HTTP handler and outputs it as a Lambda.
When to Use It
Whenever you want to expose an API or a function written in Go.
How to Use It
Define a index.go
file inside a folder as follows:
package main import ( "fmt" "net/http" ) func Handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "<h1>Hello from Go on Now!</h1>") }
And define a now.json
like:
{ "version": 2, "builds": [{ "src": "*.go", "use": "@now/go" }] }
Notice that the API is cohesive with the net/http
Go API. Your main entrypoint function must be called Handler
.
The example above can be seen live from the following URL: https://go-deployment-l78bij0fj.now.sh/
Also, the source code of the deployment can be checked by appending /_src
e.g. https://go-deployment-l78bij0fj.now.sh/_src.
Technical Details
Entrypoint
The entrypoint file must be a .go
source file with a Handler
function inside implementing the net/http
API.
Version
Go 1.x is used.
Maximum Lambda Bundle Size
To help keep cold boot times low, the maximum output bundle size for a Go lambda is, by default, 10mb
.
This limit is extendable up to 50mb
.
maxLambdaSize
configuration:{
"builds": [
{ "src": "*.go", "use": "@now/go", "config": { "maxLambdaSize": "20mb" } }
]
}