7
votes

AWS released auto scaling for DynamoDB. I would like to know how to create a Table with auto scaling via Cloudformation.

1

1 Answers

8
votes

Here is the ClodFormation auto-scaling policy for DynamoDB table. Hope it gives you some idea about how to form the policy script.

{
  "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
  "Properties" : {
    "PolicyName" : "MyScalingPolicy",
    "PolicyType" : "TargetTrackingScaling",
    "ResourceId" : "arn:aws:dynamodb:us-east-1:123456789012:table/books_table",
    "ScalableDimension" : "dynamodb:table:WriteCapacityUnits",
    "ServiceNamespace" : "dynamodb",
    "TargetTrackingScalingPolicyConfiguration" : {
    "PredefinedMetricSpecification": {
            "PredefinedMetricType": "DynamoDBWriteCapacityUtilization"
        },
        "ScaleOutCooldown": 60,
        "ScaleInCooldown": 60,
        "TargetValue": 50.0
    }    
  }
}

References:-

CloudFormaction auto-scaling policy

AWS CLI command for auto scaling

AWS CLI Command:-

aws application-autoscaling put-scaling-policy \
    --service-namespace dynamodb \
    --resource-id "table/TestTable" \
    --scalable-dimension "dynamodb:table:WriteCapacityUnits" \
    --policy-name "MyScalingPolicy" \
    --policy-type "TargetTrackingScaling" \
    --target-tracking-scaling-policy-configuration file://scaling-policy.json

scaling-policy.json:-

{
    "PredefinedMetricSpecification": {
        "PredefinedMetricType": "DynamoDBWriteCapacityUtilization"
    },
    "ScaleOutCooldown": 60,
    "ScaleInCooldown": 60,
    "TargetValue": 50.0
}