Warm up your lambda and reduce cold starts.
npm install @thundra/warmup --saveThere 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.
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.
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!");
});There are two ways to enable warming up for a specific lambda:
- set
thundra_lambda_warmup_warmupAwareenvironment variabletruein your lambda or - add your lambda's name to
thundra-lambda-warmup'sthundra_lambda_warmup_functionenvironment variable.
For more detailed information, check out warmup configuration.
Please see the CHANGELOG file.