Warm up your lambda and reduce cold starts.
npm install @thundra/warmup --save
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.
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_warmupAware
environment variabletrue
in your lambda or - add your lambda's name to
thundra-lambda-warmup
'sthundra_lambda_warmup_function
environment variable.
For more detailed information, check out warmup configuration.
Please see the CHANGELOG file.