Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

dhoeric/dynamic-dynamodb-lambda

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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', // region
 timeframeMin : 5, // evaluation timeframe (minute)
 tables :
     [
         {
         tableName : 'testTable',     // table name
         reads_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 Capacity
         writes_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 reads
         decrease_reads_with : 0,     // to don't scale down reads
         base_reads : 3,
         writes_upper_threshold : 90,
         writes_lower_threshold : 40,
         increase_writes_with : 0,    // to don't scale up writes
         decrease_writes_with : 0,    // to don't scale down writes
         base_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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.