---
title: "Ensure DynamoDB Tables have Auto Scaling enabled"
canonical: "https://kb.cynergy.app/space/MD/991593116/Ensure%20DynamoDB%20Tables%20have%20Auto%20Scaling%20enabled"
format: markdown
---
Cynergy Policy ID: CYN_AWS_GENERAL_44  
Severity: LOW  


## 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

Go

```go
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"
  }
}

```