Serverless Plugin for AWS Lambdas Provisioned Concurrency Auto Scaling Configuration.
npm install serverless-provisioned-concurrency-autoscaling!logo





Serverless Plugin for AWS Lambda Provisioned Concurrency Auto Scaling configuration.
Related blog post can be found on the Neiman Marcus Medium page.
Add the NPM package to your project:
``bash`
$ npm install serverless-provisioned-concurrency-autoscaling
Add the plugin to your serverless.yml:
Use version 1.9.1 for Serverless 1/ Serverless 2.
Use version 2.0.1 for Serverless 3.
`yaml`
plugins:
- serverless-provisioned-concurrency-autoscaling
Add concurrencyAutoscaling parameters under each function you wish to autoscale in your serverless.yml.
Add customMetric: true if you want to use Maximum instead of Average statistic.
yaml
functions:
hello:
handler: handler.hello
provisionedConcurrency: 1
concurrencyAutoscaling: true
`$3
`yaml
functions:
world:
handler: handler.world
provisionedConcurrency: 1
concurrencyAutoscaling:
enabled: true
alias: provisioned
maximum: 10
minimum: 1
usage: 0.75
scaleInCooldown: 0
scaleOutCooldown: 0
customMetric:
statistic: maximum
scheduledActions:
- name: OpenOfficeTime
startTime: "2025-01-01T00:00:00.000Z"
endTime: "2025-01-01T23:59:59.999Z"
timezone: "America/Chicago"
schedule: "cron(30 8 ? 1-6 )"
action:
maximum: 100
minimum: 10
- name: CloseOfficeTime
startTime: "2025-01-01T00:00:00.000Z"
endTime: "2025-01-01T23:59:59.999Z"
timezone: "America/Chicago"
schedule: "cron(30 17 ? 1-6 )"
action:
maximum: 10
minimum: 1
- name: BlackFridayPeak1
startTime: "2025-01-02T00:00:00.000Z"
endTime: "2025-01-02T23:59:59.999Z"
timezone: "America/New_York"
schedule: "at(2025-01-02T12:34:56)"
action:
maximum: 50
minimum: 5
- name: BlackFridayPeak2
startTime: "2025-01-03T00:00:00.000Z"
endTime: "2025-01-03T23:59:59.999Z"
timezone: "Europe/Warsaw"
schedule: "rate(1 hour)"
action:
maximum: 50
minimum: 5
`That's it! With the next deployment, serverless will add Cloudformation resources to scale provisioned concurrency!
You must provide at least
provisionedConcurrency and concurrencyAutoscaling to enable autoscaling. Set concurrencyAutoscaling to a boolean, or object with configuration. Any omitted configuration will use module defaults.$3
`yaml
alias: provisioned
maximum: 10
minimum: 1
usage: 0.75
scaleInCooldown: 0
scaleOutCooldown: 0
`Change in Default Behavior: Starting in v1.7.0, the default scaleInCooldown is zero, not 120. This is backwards compatible, but different default behavior. This is in line with AWS' default scaleInCooldown.
$3
For more details on Scheduled Actions formats see
the AWS CloudFormation ScheduledAction description.
#### Description of
scheduledActions's properties:| Attribute | Description | Required | Example |
|-----------|---------------------------------------------------------------------------------------------------------------|----------|----------------------------------|
| endTime | The date and time that the action is scheduled to end, in UTC. | no |
2025-12-31T23:59:59.999Z |
| startTime | The date and time that the action is scheduled to begin, in UTC. | no | 2025-01-01T00:00:00.000Z |
| timezone | Timezone for startTime and endTime. Needs to be the canonical names of the IANA (supported by Yoda-Time). | no | America/Chicago |
| name | The name of the scheduled action unique among all other scheduled actions on the specified scalable target. | yes | OpenOfficeHourScheduleStart |
| schedule | One of three string formats: at, cron or rate (see next table). | yes | cron( 30 8 1-6 *) |
| action | Object of minimum and maximum properties. At least one is required. | yes | minimum: 100
maximum: 105 |#### Description of
schedule's properties:For more details on schedule syntax see:
* AWS CloudFormation ScheduledAction description
* AWS Schedule Expressions for Rules (cron)
* AWS Put Scheduled Action - Timezone
| Attribute | Description | Format | Example |
|-----------|--------------------------------------|---------------------------|---------------------------|
| at | A start (a point in time) |
at(yyyy-mm-ddThh:mm:ss) | at(2025-01-02T00:00:00) |
| cron | A cron syntax for recurring schedule | cron(fields) | cron(30 17 ? 1-6 ) |
| rate | A rate | rate(value unit) | rate(16 minuets)` |N/A
- Refer to our contribution guidelines to contribute to this project. See CONTRIBUTING.md.
- All contributions must follow our code of conduct. See CONDUCT.md.
- This project is licensed under the Apache 2.0 license. See LICENSE.
- serverless-dynamodb-autoscaling - Original plugin this module is based on.