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 handler 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 an exported function.
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 containing an exported function that implements the net/http
API.
@now/go
will automatically detect a go.mod
file to install dependencies at the entrypoint level.Private packages
To install private packages with go get
, define GIT_CREDENTIALS
as a build environment variable in now.json
.
All major Git providers are supported including GitHub, GitLab, Bitbucket, as well as a self-hosted Git server.
With GitHub, you will need to create a personal token with permission to access your private repository.
{ "build": { "env": { "GIT_CREDENTIALS": "https://username:token@github.com" } } }
Version
Go 1.x is used.