examples/basic/main.go

// Command basic is the minimal Lambda function that demonstrates lambdalog.
// It accepts an arbitrary JSON payload and echoes a simple greeting with
// a log line per invocation.
//
// See mercemay.top/src/lambdalog/examples/basic/.
package main

import (
	"context"
	"encoding/json"

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

	adapter "mercemay.top/src/lambdalog/adapters/lambda"
)

type input struct {
	Name string `json:"name"`
}

type output struct {
	Greeting string `json:"greeting"`
}

type logger struct{}

func (logger) Info(string, ...adapter.Field)         {}
func (logger) Error(string, ...adapter.Field)        {}
func (logger) With(...adapter.Field) adapter.Logger  { return logger{} }

func handle(ctx context.Context, raw []byte) ([]byte, error) {
	var in input
	if len(raw) > 0 {
		if err := json.Unmarshal(raw, &in); err != nil {
			return nil, err
		}
	}
	if in.Name == "" {
		in.Name = "world"
	}
	out := output{Greeting: "hello, " + in.Name}
	return json.Marshal(out)
}

func main() {
	h := adapter.Handler(logger{}, awslambda.HandlerFunc(handle))
	awslambda.Start(h)
}