π§± Services Used
AWS Lambda β serverless compute
Amazon S3 β source & destination buckets
Amazon CloudWatch
Logs
Metrics
Dashboards
Alarms
Amazon SNS β email notifications
AWS CloudTrail β API activity auditing
Terraform (custom modules) β full automation
π§© Terraform Architecture (Modular)
The project is split into multiple custom Terraform modules:
s3 β secure buckets with encryption & versioning
lambda β function, IAM role, permissions
cloudwatch_logs β log groups & filters
cloudwatch_metrics β custom metrics
cloudwatch_alarms β alert definitions
sns β notification channels
This mirrors real enterprise Terraform layouts.
π Observability Implementation
1οΈβ£ Logs (CloudWatch Logs)
Lambda logs are captured and analyzed using log metric filters.
Tracked patterns include:
Processing errors
Invalid file uploads
Large file sizes
Access denied events
Successful executions
Regex-based filters convert logs into metrics.
2οΈβ£ Custom Metrics
Beyond default Lambda metrics, custom metrics include:
Images processed successfully
Image processing failures
Invalid file types
Processing duration thresholds
File size violations
These metrics provide application-level visibility, not just infrastructure stats
3οΈβ£ Dashboards
A CloudWatch Dashboard is created entirely via Terraform (JSON):
Widgets include:
Invocation count
Error rate
Duration (Avg + P99 latency)
Concurrent executions
Custom error metrics
Log-based error trends
This dashboard is production-ready.
4οΈβ£ Alerts & Alarms
Multiple alarm categories are implemented:
β Lambda errors
β±οΈ High execution duration
π₯ Concurrency limit breaches
π Invalid file uploads
π« Log-based failures
All alarms are parameterized via Terraform variables.
5οΈβ£ Notifications (SNS)
Separate SNS topics for alert types
Email subscriptions (manual confirmation)
Real-time alert delivery when alarms trigger
This completes the incident response loop.
π Dockerized Lambda Layer Build
To avoid the classic βworks on my machineβ problem:
Lambda dependencies (Pillow) are built using Docker
Ensures compatibility with AWS Lambda Linux runtime
Terraform deploys the generated layer artifact
This is production-grade dependency management.
π§ͺ Testing & Failure Simulation
The project is actively tested by:
Uploading valid images β metrics increase
Uploading invalid files (PDF/GIF) β error alarms trigger
Uploading large files β size alarms trigger
Uploading multiple files β concurrency alarms trigger
Alerts are received via email in real time.
This proves the system actually works.
Top comments (0)