Skip to content

Instantly share code, notes, and snippets.

@DoZator
Created May 4, 2023 05:37
Show Gist options
  • Save DoZator/463a474b0fe75e115091899db5857c00 to your computer and use it in GitHub Desktop.
Save DoZator/463a474b0fe75e115091899db5857c00 to your computer and use it in GitHub Desktop.
AWS Lambda with go-chi
package main

import (
    "context"
    "net/http"

    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"

    "github.com/go-chi/chi"
    chiproxy "github.com/awslabs/aws-lambda-go-api-proxy/chi"
)

var adapter *chiproxy.ChiLambda

func FirstHandler(w http.ResponseWriter, r *http.Request) {
    ...
}

func SecondHandler(w http.ResponseWriter, r *http.Request) {
    ...
}

func init() {
    r := chi.NewRouter()

    r.Get("/api/route", FirstHandler)
    r.Post("/api/route", SecondHandler)

    adapter = chiproxy.New(r)
}

func lambdaHandler(ctx context.Context, r events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    c, err := adapter.ProxyWithContext(ctx, r)

    return c, err
}

func main() {
    lambda.Start(lambdaHandler)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment