handler

package module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2025 License: MIT Imports: 25 Imported by: 5

README

AWS Lambda Handler

Provides a wrapper method (with logging and XRay tracing) to start a lambda function.

[!IMPORTANT] This repository does not use semantic versioning

Usage:

See examples/handler/main.go and examples/sqs/main.go

Tasks

xcfile.dev tasks

test
#!/bin/bash
go test ./... -json | tparse
format
go fmt $(go list ./...)
vet
#!/bin/bash
go vet ./...

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildAndStart

func BuildAndStart[T interface{}, U interface{}](getHandler func(awsConfig aws.Config) Handler[T, U])

BuildAndStart configures a logger, instruments the handler with OpenTelemetry, instruments the AWS SDK, and then starts the lambda

func GetEnv added in v1.0.5

func GetEnv(key string) string

func IsErrorRetryable added in v1.0.5

func IsErrorRetryable(err error) bool

func IsLambda added in v1.0.4

func IsLambda() bool

func MustGetEnv

func MustGetEnv(key string) string

func MustGetEnvBool added in v1.0.5

func MustGetEnvBool(key string) bool

func MustGetEnvFloat added in v1.0.5

func MustGetEnvFloat(key string) float64

func MustGetEnvInt

func MustGetEnvInt(key string) int

func MustGetEnvMap added in v1.0.5

func MustGetEnvMap(envVar string) map[string]string

Types

type BasicHandler added in v1.0.5

type BasicHandler[T interface{}, U interface{}] func(ctx context.Context, event T) (U, error)

type Builder added in v1.0.5

type Builder[T any, U any] struct {
	// contains filtered or unexported fields
}

func Build added in v1.0.5

func Build[T interface{}, U interface{}](getHandler func(awsConfig aws.Config) Handler[T, U]) *Builder[T, U]

func (*Builder[T, U]) Start added in v1.0.5

func (b *Builder[T, U]) Start()

func (*Builder[T, U]) WithLogWriter added in v1.0.5

func (b *Builder[T, U]) WithLogWriter(getWriter func(aws.Config) *io.Writer) *Builder[T, U]

type Context added in v1.0.5

type Context struct {
	context.Context
	// contains filtered or unexported fields
}

func Get added in v1.0.5

func Get(ctx context.Context) *Context

func GetJSONTestLogger added in v1.0.5

func GetJSONTestLogger(ctx context.Context) (*Context, func())

func GetWithSlogLogger added in v1.0.5

func GetWithSlogLogger(ctx context.Context, slogger *slog.Logger) *Context

func GetWithSuppressedLogging added in v1.0.5

func GetWithSuppressedLogging(ctx context.Context) *Context

func (*Context) GetLogger added in v1.0.5

func (h *Context) GetLogger() *Logger

func (*Context) Metric added in v1.0.5

func (h *Context) Metric(metricName string) *MetricBuilder

func (*Context) Split added in v1.0.5

func (h *Context) Split(ctx context.Context) (*Context, func())

type Handler

type Handler[T interface{}, U interface{}] func(ctx *Context, event T) (U, error)

func GetSQSHandler

func GetSQSHandler[T any](sqsHandlerIface SQSHandlerStruct[T], addLoggerParams func(lp *LoggerParams, t T)) Handler[events.SQSEvent, events.SQSEventResponse]

GetSQSHandler returns a lambda handler that will process each SQS message in parallel using the provided processRecord function

type Logger added in v1.0.5

type Logger struct {
	// contains filtered or unexported fields
}

func (*Logger) AddParam added in v1.0.5

func (s *Logger) AddParam(key any, value any) *Logger

func (*Logger) AddStage added in v1.0.5

func (s *Logger) AddStage(description string) *Logger

AddStage adds a stage to the logging story

description should be in the form <noun> <verb> <other words>. For example: Invocation returned error, OR Validation succeeded

func (*Logger) AddStageIfNoError added in v1.0.5

func (s *Logger) AddStageIfNoError(description string, err error) error

func (*Logger) Debug added in v1.0.5

func (s *Logger) Debug(msg string, args ...any)

func (*Logger) DisableCombinedMode added in v1.0.5

func (s *Logger) DisableCombinedMode()

func (*Logger) Error added in v1.0.5

func (s *Logger) Error(msg string, args ...any)

func (*Logger) Errorf added in v1.0.5

func (s *Logger) Errorf(format string, args ...any)

func (*Logger) Info added in v1.0.5

func (s *Logger) Info(msg string, args ...any)

func (*Logger) Infof added in v1.0.5

func (s *Logger) Infof(format string, args ...any)

func (*Logger) Log added in v1.0.5

func (s *Logger) Log()

func (*Logger) Warn added in v1.0.5

func (s *Logger) Warn(msg string, args ...any)

func (*Logger) With added in v1.0.5

func (s *Logger) With(args ...any) *Logger

func (*Logger) WithLineParams added in v1.0.5

func (s *Logger) WithLineParams(args ...any) *Logger

WithLineParams adds common key-value pairs which will be appended to the end of the next line which is logged. For example:

`message; a=1; b=foo`

type LoggerParams added in v1.0.5

type LoggerParams struct {
	// contains filtered or unexported fields
}

func NewLoggerParams added in v1.0.5

func NewLoggerParams() *LoggerParams

func (*LoggerParams) Add added in v1.0.5

func (lp *LoggerParams) Add(key string, value any)

type MetricBuilder added in v1.0.5

type MetricBuilder struct {
	// contains filtered or unexported fields
}

func (*MetricBuilder) Dimension added in v1.0.5

func (m *MetricBuilder) Dimension(key string, value any) *MetricBuilder

func (*MetricBuilder) Unit added in v1.0.5

func (m *MetricBuilder) Unit(value string) *MetricBuilder

func (*MetricBuilder) Value added in v1.0.5

func (m *MetricBuilder) Value(value any)

type RetryableError added in v1.0.5

type RetryableError interface {
	IsRetryable() bool
}

type SQSHandlerStruct added in v1.0.5

type SQSHandlerStruct[T any] interface {
	ProcessSQSEvent(ctx *Context, genericType T, attributes map[string]events.SQSMessageAttribute) error
}

type SQSRecordProcessor

type SQSRecordProcessor[T any] func(ctx *Context, genericType T, attributes map[string]events.SQSMessageAttribute) error

Directories

Path Synopsis
examples
handler command
sqs command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL