Terraform DynamoDB AutoScaling Policy
resource "aws_appautoscaling_target" "write_capacity_target" {
max_capacity = "${var.max_write_capacity}"
min_capacity = 20
resource_id = "table/${aws_dynamodb_table.my_table.id}"
scalable_dimension = "dynamodb:table:WriteCapacityUnits"
service_namespace = "dynamodb"
role_arn = "${var.my_role_arn}"
}
resource "aws_appautoscaling_target" "read_capacity_target" {
max_capacity = "${var.max_read_capacity}"
min_capacity = 20
resource_id = "table/${aws_dynamodb_table.my_table.id}"
scalable_dimension = "dynamodb:table:ReadCapacityUnits"
service_namespace = "dynamodb"
role_arn = "${var.my_role_arn}"
}
resource "aws_appautoscaling_policy" "write_capacity_policy" {
policy_type = "TargetTrackingScaling"
adjustment_type = "PercentChangeInCapacity"
cooldown = 60
metric_aggregation_type = "Maximum"
min_adjustment_magnitude = 10
name = "scale-write"
resource_id = "table/${aws_dynamodb_table.my_table.id}"
scalable_dimension = "dynamodb:table:WriteCapacityUnits"
service_namespace = "dynamodb"
step_adjustment {
metric_interval_lower_bound = 1.0
metric_interval_upper_bound = 5.0
scaling_adjustment = -4
}
step_adjustment {
metric_interval_lower_bound = 6.0
metric_interval_upper_bound = 10.0
scaling_adjustment = 4
}
depends_on = ["aws_appautoscaling_target.write_capacity_target"]
}
resource "aws_appautoscaling_policy" "read_capacity_policy" {
policy_type = "TargetTrackingScaling"
adjustment_type = "PercentChangeInCapacity"
cooldown = 60
metric_aggregation_type = "Maximum"
min_adjustment_magnitude = 10
name = "scale-read"
resource_id = "table/${aws_dynamodb_table.my_table.id}"
scalable_dimension = "dynamodb:table:ReadCapacityUnits"
service_namespace = "dynamodb"
step_adjustment {
metric_interval_lower_bound = 1.0
metric_interval_upper_bound = 5.0
scaling_adjustment = -4
}
step_adjustment {
metric_interval_lower_bound = 6.0
metric_interval_upper_bound = 10.0
scaling_adjustment = 4
}
depends_on = ["aws_appautoscaling_target.read_capacity_target"]
}