Skip to content
This repository has been archived by the owner on Jul 31, 2023. It is now read-only.

thundra-io/thundra-lambda-nodejs-warmup

Repository files navigation

Thundra Lambda Node.js Warmup Wrapper

Coverage Status CircleCI

Warm up your lambda and reduce cold starts.

Installation

npm install @thundra/warmup --save

Usage

There are three steps to warm up your lambdas.

If you are using Thundra to monitor your lambdas, set thundra_agent_lambda_warmup_warmupAware environment variable true in your lambda and skip step 2.

1. Setup our warmup lambda

You can setup thundra-lambda-warmup manually or using Serverless Framework.

Check out our docs for more information.

Manual setup might sound harder but it is actually more straightforward.

2. Wrap your lambda using this module

const thundraWarmup = require("@thundra/warmup");

const thundraWarmupWrapper = thundraWarmup();

exports.handler = thundraWarmupWrapper((event, context, callback) => {
    callback(null, "No more cold starts!");
});

Here is an example using ES6+ (see serverless-webpack plugin) and async/await.

import thundraWarmup from "@thundra/warmup";

const thundraWarmupWrapper = thundraWarmup();

const handler = thundraWarmupWrapper(async event => {
    return await someAsyncCall();
});

export { handler };

You can also pass an optional callback function which will be called on warmup requests.

const thundraWarmup = require("@thundra/warmup");

const optionalCallback = () => console.log(Warming up...);

const thundraWarmupWrapper = thundraWarmup(optionalCallback);

exports.handler = thundraWarmupWrapper((event, context, callback) => {
    callback(null, "No more cold starts!");
});

And disable console.log output.

const thundraWarmup = require("@thundra/warmup");

const thundraWarmupWrapper = thundraWarmup(null, { logEnabled: false });

exports.handler = thundraWarmupWrapper((event, context, callback) => {
    callback(null, "No more cold starts!");
});

context.succeed, context.fail, context.done are also supported.

const thundraWarmup = require("@thundra/warmup");

const thundraWarmupWrapper = thundraWarmup();

exports.handler = thundraWarmupWrapper((event, context) => {
    context.succeed("No more cold starts!");
});

3. Enable warming up for your lambda

There are two ways to enable warming up for a specific lambda:

  • set thundra_lambda_warmup_warmupAware environment variable true in your lambda or
  • add your lambda's name to thundra-lambda-warmup's thundra_lambda_warmup_function environment variable.

For more detailed information, check out warmup configuration.

Changelog

Please see the CHANGELOG file.

About

Thundra Lambda Node.js Warmup Wrapper

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •