warmup
Warmup middleware that helps to reduce the cold-start issue. Compatible by default with serverless-plugin-warmup
, but it can be configured to suit your implementation.
This middleware allows you to specify a schedule to keep Lambdas that always need to be very responsive warmed-up. It does this by regularly invoking the Lambda, but will terminate early to avoid the actual handler logic from being run.
If you use serverless-plugin-warmup
the scheduling part is done by the plugin and you just have to attach the middleware to your "middyfied" handler. If you don't want to use the plugin you have to create the schedule yourself and define the isWarmingUp
function to define whether the current event is a warmup event or an actual business logic execution.
Important: AWS recently announced Lambda Provisioned Concurrency. If you have this enabled, you do not need this middleware.
To update your code to use Provisioned Concurrency see:
Install
To install this middleware you can use NPM:
- npm
- Yarn
- pnpm
npm install --save @middy/warmup
yarn add @middy/warmup
pnpm add @middy/warmup
Options
isWarmingUp
: a function that accepts theevent
object as a parameter and returnstrue
if the current event is a warmup event andfalse
if it's a regular execution. The default function will check if theevent
object has asource
property set toserverless-plugin-warmup
.
Sample usage
const middy = require('@middy/core')
const warmup = require('@middy/warmup')
const lambdaHandler = (event, context, cb) => {
/* ... */
}
const isWarmingUp = (event) => event.isWarmingUp === true
export const handler = middy()
.use(warmup({ isWarmingUp }))
.handler(lambdaHandler)