Skip to content

Repository files navigation

ses-monitoring

AWS Lambda that monitors SES sending events (bounces, complaints, rejections, delivery delays, rendering failures) and pushes alerts to Slack.

Architecture

SES Configuration Set
  → SNS topic or EventBridge
    → this Lambda (parses SES event, formats alert)
      → Slack webhook

The Lambda supports two input modes:

  • SNS — handler: com.functorful.sesmonitoring.SnsEntryHandler
  • EventBridge — handler: com.functorful.sesmonitoring.EventBridgeEntryHandler

Select the appropriate handler in the Lambda configuration based on your event source.

Built with Micronaut 4.9 and compiled to a GraalVM native image for fast Lambda cold starts.

Supported event types

Event type Severity Description
Bounce (Permanent) Critical Hard bounce — recipient address does not exist
Bounce (Transient) Warning Soft bounce — temporary delivery failure
Complaint Critical Recipient marked email as spam
Reject Critical SES rejected the email before sending
DeliveryDelay Warning Temporary communication failure
Rendering Failure Warning SES template rendering error

Configuration

The Lambda requires one environment variable:

Variable Description
SLACK_WEBHOOK_URL Slack incoming webhook URL for alert delivery

Container images

Published to GitHub Container Registry on every version tag:

ghcr.io/functorful/ses-monitoring:<tag>

Versioning

Tags are created automatically on every push to main using github-tag-action. The default bump is patch.

Controlling the version bump

Include one of these tokens in your commit message to control the bump:

Token Example Result
#patch fix: handle null bounce #patch v0.1.0 → v0.1.1
#minor feat: add email gateway #minor v0.1.0 → v0.2.0
#major refactor!: new alert format #major v0.1.0 → v1.0.0
#none docs: update readme #none no tag created

If no token is present, the default #patch bump is applied.

Development

./gradlew build              # compile + test
./gradlew test               # tests only
./gradlew optimizedDockerBuildNative   # build native Docker image

Requires Java 21 and GraalVM.

About

Lambda function to handle SES monitoring events and produce alerts and reports

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages