lambda-leak

AWS Lambda Resource Leak Detector

Usage no npm install needed!

<script type="module">
  import lambdaLeak from 'https://cdn.skypack.dev/lambda-leak';
</script>

README

Build Status

lambda-leak

Simple utility to detect resource leaks in AWS Lambda handlers using Node.js that can lead to expensive charges lengthy operations or failures from timeouts.

Features

  • Detects socket leaks
  • Detects excess timers
  • Works with mocha's timeout system
  • Works with Node 6.10.x

Installation

Install via npm.

npm install lambda-leak

Getting Started

The lambda-leak detector should be used within a unit testing environment, like mocha, to capture and diagnose potential resource leaks. The following example demonstrates how to use the leak detector inside a unit test.

'use strict';

const lambdaLeak = require( 'lambda-leak' );

const handler = require( 'my-lambda-handler-module' );

describe( 'myModule', function() {

    describe( 'handler', function() {

        it( 'detect leak in my handler', function( done ) {

            const state = lambdaLeak.capture();

            handler( {/* event*/, { /* context */}, function( err, result ) {

                if( err ) {

                    return done( err );
                }

                let difference = state..getDifferenceInHandles();

                if( difference.length > 0 ) {

                    console.log( 'leaks', difference );

                    // leaks detected
                    done( new Error( 'leaks detected' ) );
                }

                done();
            });
        });
    });
});

Projects Using lambda-leak

  • lambda-tester - reduce the time and effort to test AWS Lambda handlers.

Feedback

We'd love to get feedback on how you're using lambda-tester and things we could add to make this tool better. Feel free to contact us at feedback@vandium.io

License

BSD-3-Clause