Part of the core team for the middy middleware engine for Node.js Lambda functions.


The lumigo-cli is a collection of helpful commands for working with AWS Lambda and just AWS in general.

Here are a few of the more popular commands:

  • analyze-lambda-cold-starts: analyze cold start count and duration for all functions in all regions
  • analyze-lambda-cost: estimate Lambda function costs in all regions
  • powertune-lambda: find the optimal Lambda memory size for performance, cost, or the best balance of the two
  • replay-sqs-dlq: replays messages in a SQS DLQ to another SQS queue/SNS topic/Kinesis stream
  • tail-dynamodb: tail events going into a DynamoDB stream
  • tail-eventbridge-bus: tail events recorded by an EventBridge bus
  • tail-eventbridge-rule: tail events recorded by an EventBridge rule
  • tail-kinesis: tail events going into a Kinesis stream
  • tail-sns: tail messages published to a SNS topic
  • tail-sqs: tail messages published to a SQS queue
  • switch-profile: easily switch between different named AWS profiles (configured via aws configure)


dazn-lambda-powertools is a collection of tightly integrated tools, including:

Serverless Application Repository apps

  • lambda-janitor: cron job to delete old, unused versions of all Lambda functions in the region to free up storage space.
  • auto-subscribe-log-group-to-arn: subscribes new and existing CloudWatch log groups to a Lambda function, Kinesis stream, or Firehose delivery stream by ARN.
  • auto-set-log-group-retention: updates the retention policy for new and existing CloudWatch log groups to a specified number of days to reduce CloudWatch Logs cost.
  • async-custom-metrics: lets you record custom metrics by writing to stdout (which is recorded in CloudWatch Logs) which is then parsed and forwarded to CloudWatch metrics as custom metrics.
  • measure-cold-start: lets you measure the cold start of your function. It’s best to use this SAR through the lumigo-cli‘s measure-lambda-cold-starts command, which manages the deployment of this SAR and keeps it up-to-date.
  • propagate-cfn-tags: propagates CloudFormation tags to resources that are not automatically tagged, e.g. CloudWatch log groups.
  • autodeploy-layer: automatically deploys a Lambda layer to all new and existing functions in the region. Supports opt-in and opt-out via function tags.
  • lambda-invocation-cfn-custom-resource: supports CloudFormation custom resource to invoke a Lambda function during deployment.
  • dazn-lambda-powertools: deploys all the packages from DAZN lambda powertools (see above) as one Lambda layer in your account.
  • cloudwatch-alarms-macro: deploys a CloudFormation macro that auto-generates CloudWatch Alarms for you based on the resources you have in a CloudFormation template.
  • lambda-timeout-metric: automatically create metric filters for Lambda log groups to report function timeouts as a custom metric.

Serverless framework plugins

Demo apps

I have published many demo apps with accompanying blog posts to illustrate techniques for building serverless applications, such as:

  • lambda-config-demo: demonstrates approaches for managing configs for Lambda functions.
  • lambda-protobuf-demo: demonstrates how to build APIs that uses protobuffer with Lambda and API Gateway.
  • lambda-saga-pattern: demonstrates how to implement the Saga pattern with Lambda and Step Functions.