A plugin for the Serverless framework which configures throttling for API Gateway endpoints.
When you deploy an API to API Gateway, throttling is enabled by default. However, the default method limits – 10,000 requests/second with a burst of 5000 concurrent requests – match your account level limits. As a result, ALL your APIs in the entire region share a rate limit that can be exhausted by a single method. Read more about that here.
This plugin makes it easy to configure those limits.
- if custom throttling settings are defined for an endpoint with HTTP method
ANY
, the settings will be applied to all methods:GET
,DELETE
,HEAD
,OPTIONS
,PATCH
,POST
andPUT
.
plugins:
- serverless-api-gateway-throttling
custom:
# Configures throttling settings for the API Gateway stage
# They apply to all http endpoints, unless specifically overridden
apiGatewayThrottling:
maxRequestsPerSecond: 1000
maxConcurrentRequests: 500
functions:
# Throttling settings are inherited from stage settings
update-item:
handler: rest_api/item/post/handler.handle
events:
- http:
path: /item
method: post
# Requests are throttled using this endpoint's throttling configuration
list-all-items:
handler: rest_api/items/get/handler.handle
events:
- http:
path: /items
method: get
throttling:
maxRequestsPerSecond: 2000
maxConcurrentRequests: 1000
# Requests are throttled for both endpoints
get-item:
handler: rest_api/items/get/handler.handle
events:
- http: # throttling settings are inherited from stage settings
path: /item/{itemId}
method: get
- http:
path: /another/item/{itemId}
method: get
throttling:
maxRequestsPerSecond: 2000
maxConcurrentRequests: 1000
# Requests are throttled for both endpoints
get-blue-item:
handler: rest_api/items/blue/get/handler.handle
events:
- http:
path: /item/blue/{itemId}
method: get
throttling:
maxRequestsPerSecond: 300
# maxConcurrentRequests are inherited from stage settings
- http:
path: /item/dark-blue/{itemId}
method: get
throttling:
# maxRequestsPerSecond are inherited from stage settings
maxConcurrentRequests: 300