AWS Lambda HTTP Proxy integration event bridge to Go net/http.
ridge is a bridge to convert API Gateway with Lambda Proxy Integration request/response and net/http.Request and net/http.ResponseWriter.
- API Gateway with Lambda Proxy Integration through a Proxy Resource
- Apex
package main
import (
"fmt"
"net/http"
"github.com/fujiwara/ridge"
)
func main() {
var mux = http.NewServeMux()
mux.HandleFunc("/", handleRoot)
mux.HandleFunc("/hello", handleHello)
ridge.Run(":8080", "/api", mux)
}
func handleHello(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain")
fmt.Fprintf(w, "Hello %s\n", r.FormValue("name"))
}
func handleRoot(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain")
fmt.Fprintln(w, "Hello World")
fmt.Fprintln(w, r.URL)
}
- Run
apex init
. - Place main.go to functions/example/.
- Edit project.json
"runtime": "golang"
- Run
apex deploy
- Create API Gateway Proxy Integration. http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html
ridge.Run(address, prefix, handler)
works as below.
- If a process is running on Lambda (
AWS_EXECUTION_ENV
environment variable defined),- Call apex.HandleFunc() when runtime is nodejs*
- Call lambda.Start() when runtime is go1.x
- Otherwise start a net/http server using prefix and address.
The MIT License (MIT)
Copyright (c) 2016- FUJIWARA Shunichiro