DynamoDB Tables do not have Auto Scaling enabled
Description
Checks if DynamoDB tables have autoscaling configuration. Note that for tables with billing_mode = "PAY_PER_REQUEST" such configuration is embedded by default.
Fix - Buildtime
Terraform
- Resource: aws_appautoscaling_target, aws_appautoscaling_policy, aws_dynamodb_table
resource "aws_dynamodb_table" "pass" {
name = "user"
hash_key = "user-id"
billing_mode = "PROVISIONED"
read_capacity = 10
write_capacity = 10
attribute {
name = "user-id"
type = "S"
}
}
resource "aws_appautoscaling_target" "pass" {
resource_id = "table/${aws_dynamodb_table.pass.name}"
scalable_dimension = "dynamodb:table:ReadCapacityUnits"
service_namespace = "dynamodb"
min_capacity = 1
max_capacity = 15
}
resource "aws_appautoscaling_policy" "pass" {
name = "rcu-auto-scaling"
service_namespace = aws_appautoscaling_target.pass.service_namespace
scalable_dimension = aws_appautoscaling_target.pass.scalable_dimension
resource_id = aws_appautoscaling_target.pass.resource_id
policy_type = "TargetTrackingScaling"
target_tracking_scaling_policy_configuration {
predefined_metric_specification {
predefined_metric_type = "RDSReaderAverageCPUUtilization"
predefined_metric_type = "DynamoDBReadCapacityUtilization"
}
}
}
// or:
resource "aws_dynamodb_table" "pass_on_demand" {
name = "user"
hash_key = "user-id"
billing_mode = "PAY_PER_REQUEST"
attribute {
name = "user-id"
type = "S"
}
}