
⚡️ serverless-provisioned-concurrency-autoscaling

Serverless Plugin for AWS Lambda Provisioned Concurrency Auto Scaling configuration.
Related blog post can be found on the Neiman Marcus Medium page.
Usage
Add the NPM package to your project:
$ npm install serverless-provisioned-concurrency-autoscaling
Add the plugin to your serverless.yml
:
plugins:
- serverless-provisioned-concurrency-autoscaling
Configuration
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.
functions:
hello:
handler: handler.hello
provisionedConcurrency: 1
concurrencyAutoscaling: true
world:
handler: handler.world
provisionedConcurrency: 1
concurrencyAutoscaling:
enabled: true
alias: provisioned
maximum: 10
minimum: 1
usage: 0.75
scaleInCooldown: 120
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.
Defaults
alias: provisioned
maximum: 10
minimum: 1
usage: 0.75
scaleInCooldown: 120
scaleOutCooldown: 0
Scheduled Actions
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:
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) |
Known Issues/Limitations
N/A
Authors
Conduct / Contributing / License
- 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.
Acknowledgments