Skip to content

Latest commit

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

AWS official supported auto-scaling on DynamoDB
See: https://aws.amazon.com/blogs/aws/new-auto-scaling-for-amazon-dynamodb

Dynamic DynamoDB - lambda

Use DynamoDB autoscaling with lambda!
It's Dynamic DynamoDB's simple lambda version

functional/running test passed. but before use, Test it please
please give me any report/suggestion, Welcome

Feature

  • autoscale DynamoDB's provisioned read/write capacity
  • run by lambda functon with scheduled event

File Structure

  • index.js - main handler & flow source. using async
  • tasks.js - Detail work sources. using AWS SDK
  • config.js - capacity scaling rule configuration

How to use

  1. $ git clone https://github.com/rockeee/dynamic-dynamodb-lambda.git or download zip
  2. $ npm install to download npm modules
  3. modify config.js for your configuration.
module.exports={region : 'us-west-2',// regiontimeframeMin : 5,// evaluation timeframe (minute)tables :
[{tableName : 'testTable',// table namereads_upper_threshold : 90,// read incrase threshold (%)reads_lower_threshold : 30,// read decrase threshold (%)increase_reads_with : 90,// read incrase amount (%)decrease_reads_with : 30,// read decrase amount (%)base_reads : 5,// minimum read Capacitywrites_upper_threshold : 90,// write incrase amount (%)writes_lower_threshold : 40,// write decrase amount (%)increase_writes_with : 90,// write incrase amount (%)decrease_writes_with : 30,// write incrase amount (%)base_writes : 5// minimum write Capacity},{tableName : 'testTable2',reads_upper_threshold : 90,reads_lower_threshold : 30,increase_reads_with : 0,// to don't scale up readsdecrease_reads_with : 0,// to don't scale down readsbase_reads : 3,writes_upper_threshold : 90,writes_lower_threshold : 40,increase_writes_with : 0,// to don't scale up writesdecrease_writes_with : 0,// to don't scale down writesbase_writes : 3}// additional table...]};
  1. deploy to lamda function with your favorite method (just zip, or use tool like node-lambda)
  2. check lambda function's configuration
  • memory - 128MB, timeout - 10sec
  • set Cloudwatch Event Rule to run your lambda function. for detail, refer this
  • set & attach role to lambda function
  • example role policy
 {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:UpdateTable",
"CloudWatch:getMetricStatistics"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "",
"Resource": "*",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Allow"
}
]
}

Roadmap

  • more stable
  • add SNS noti when scaled/failed

About

DynamoDB autoscaling with lambda

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages