Serverless Plugin to enable autoscaling for dynamodb tables and its GSI.
# Via yarn
$ yarn add serverless-plugin-dynamo-autoscaling
# Via npm
$ npm install serverless-plugin-dynamo-autoscaling
Add the plugin to your serverless.yml
:
plugins:
- serverless-plugin-dynamo-autoscaling
custom:
autoscaling:
- table: CustomTable # DynamoDB Resource
read:
minimum: 5 # Minimum read capacity
maximum: 1000 # Maximum read capacity
targetUsage: 75 # Targeted usage percentage
write:
minimum: 40 # Minimum write capacity
maximum: 200 # Maximum write capacity
targetUsage: 50 # Targeted usage percentage
maximum: 200
minimum: 5
targetUsage: 75
If no roleArn
is specified, plugin will automatically create one and use it.
If you only want to enable Auto Scaling for the index, use indexOnly: true
to skip Auto Scaling for the general DynamoDB table.
custom:
autoscaling:
# Autoscaling for table and index
- table: CustomTable
index: # List or single index name
- custom-index-name
read:
minimum: 5
maximum: 1000
targetUsage: 75
write:
minimum: 40
maximum: 200
targetUsage: 50
# Using with custom role
- table: CustomTable # DynamoDB Resource
roleArn: # Arn of the role to be associated - Optional
read:
minimum: 5
maximum: 1000
targetUsage: 75
write:
minimum: 40
maximum: 200
targetUsage: 50
# Autoscaling for index only
- table: IndexOnlyTable
index:
- custom-index-name
indexOnly: true # autoscaling for index only
read:
minimum: 5
maximum: 1000
targetUsage: 75
write:
minimum: 40
maximum: 200
targetUsage: 50
The example serverless configuration above works fine for a DynamoDB table CloudFormation resource like this:
resources:
Resources:
CustomTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: custom-table
AttributeDefinitions:
- AttributeName: key
AttributeType: S
KeySchema:
- AttributeName: key
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
GlobalSecondaryIndexes:
- IndexName: custom-index-name
KeySchema:
- AttributeName: key
KeyType: HASH
Projection:
ProjectionType: ALL
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
- Sebastian Müller This repo is rewrite of Sebastian's serverless plugin.
Feel free to use the code, it's released using the MIT license.