// 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)
}