Module: LambdaLoadout
- Defined in:
- lib/lambda_loadout.rb,
lib/lambda_loadout/errors.rb,
lib/lambda_loadout/global.rb,
lib/lambda_loadout/logger.rb,
lib/lambda_loadout/metrics.rb,
lib/lambda_loadout/version.rb,
lib/lambda_loadout/middleware.rb,
lib/lambda_loadout/error_notifier.rb
Overview
LambdaLoadout - AWS Lambda Powertools for Ruby
A Ruby implementation of AWS Lambda Powertools providing:
-
Structured logging with Lambda context enrichment
-
CloudWatch Metrics via Embedded Metric Format (EMF)
-
Automatic error tracking and alerting
-
Lambda middleware for easy integration
Defined Under Namespace
Modules: Errors, Global, Middleware Classes: AlarmConfig, Error, ErrorHandler, ErrorNotifier, Handler, Logger, Metrics
Constant Summary collapse
- VERSION =
'0.0.1'
Class Method Summary collapse
-
.cold_start? ⇒ Boolean
Get cold start status.
-
.configure {|Global| ... } ⇒ void
Configure LambdaLoadout globally.
-
.in_lambda? ⇒ Boolean
Check if running in AWS Lambda environment.
-
.logger ⇒ LambdaLoadout::Logger
Access global logger.
-
.metrics ⇒ LambdaLoadout::Metrics
Access global metrics.
-
.with_logging_and_metrics(logger, metrics, context, event: nil, capture_cold_start: true, error_notification_config: nil) { ... } ⇒ Object
Helper method to wrap Lambda handler with logging and metrics.
Class Method Details
.cold_start? ⇒ Boolean
Get cold start status
95 96 97 98 99 100 |
# File 'lib/lambda_loadout.rb', line 95 def self.cold_start? @cold_start ||= true current_cold_start = @cold_start @cold_start = false current_cold_start end |
.configure {|Global| ... } ⇒ void
This method returns an undefined value.
Configure LambdaLoadout globally
66 67 68 |
# File 'lib/lambda_loadout/global.rb', line 66 def self.configure yield Global end |
.in_lambda? ⇒ Boolean
Check if running in AWS Lambda environment
88 89 90 |
# File 'lib/lambda_loadout.rb', line 88 def self.in_lambda? !ENV['AWS_LAMBDA_FUNCTION_NAME'].nil? end |
.logger ⇒ LambdaLoadout::Logger
Access global logger
73 74 75 |
# File 'lib/lambda_loadout/global.rb', line 73 def self.logger Global.logger end |
.metrics ⇒ LambdaLoadout::Metrics
Access global metrics
80 81 82 |
# File 'lib/lambda_loadout/global.rb', line 80 def self.metrics Global.metrics end |
.with_logging_and_metrics(logger, metrics, context, event: nil, capture_cold_start: true, error_notification_config: nil) { ... } ⇒ Object
Helper method to wrap Lambda handler with logging and metrics
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/lambda_loadout.rb', line 56 def self.with_logging_and_metrics(logger, metrics, context, event: nil, capture_cold_start: true, error_notification_config: nil, &block) logger.inject_lambda_context(context) begin result = block.call metrics.add_cold_start_metric(context) if capture_cold_start result rescue StandardError => e logger.error('Lambda execution failed', e) metrics.add_metric(name: 'LambdaError', unit: 'Count', value: 1) # Send error notification if configured if error_notification_config && error_notification_config[:sns_topic_arn] notifier = ErrorNotifier.new( sns_topic_arn: error_notification_config[:sns_topic_arn], logger: logger, region: error_notification_config[:region] ) notifier.notify(error: e, context: context, event: event || {}) end raise ensure metrics.flush end end |