lambda-http-adaptor is a compatible adaptor for Go net/http
that can be used in multiple serverless environments.
You can run your existing http.HandlerFunc
compatible web application on AWS Lambda or Azure Functions.
lambda-http-adaptor provides the adaptor.ListenAndServe
method, which can drop-in replacement for the http.ListenAndServe
.
package main
import (
"github.com/yacchi/lambda-http-adaptor"
_ "github.com/yacchi/lambda-http-adaptor/all"
"log"
"net/http"
)
func main() {
log.Fatalln(adaptor.ListenAndServe("", http.HandlerFunc(echoReplyHandler)))
}
func echoReplyHandler(w http.ResponseWriter, r *http.Request) {
m := r.URL.Query().Get("message")
w.Header().Set("Content-Type", "text/plain")
w.Write([]byte(m))
}
Pass-through of non-HTTP Events has been added in v0.5.0. The destination path is /events by default. If you want to change the forwarding path or stop forwarding, please refer to the following sample for configuration.
func main() {
log.Fatalln(adaptor.ListenAndServeWithOptions(
"",
handler,
// aws.WithNonHTTPEventPath("/api"),
// aws.WithoutNonHTTPEventPassThrough(),
)
}
- AWS Lambda support
- API Gateway REST API integration
- Multi-value headers
- Multi-value query string
- Get ProxyRequestContext value from Context
- API Gateway HTTP API integration
- Multi-value headers
- Get V2 HTTPRequestContext value from Context
- Application Load Balancer Lambda target
- Multi-value headers
- Get ALBTargetGroupRequestContext value from Context
- Get raw request value from Context
- Lambda container image function
- API Gateway Websocket API integration (Experimental)
- Non-HTTP event pass-through
- API Gateway REST API integration
- AWS API Gateway utilities
- Strip stage var middleware
- Abstract interface of RequestContext
- Azure Functions support
- HTTP Trigger with custom handler