More Info:

Amazon DynamoDB Auto Scaling feature should be enabled to dynamically adjust provisioned throughput (read and write) capacity for your tables and global secondary indexes. This can make it easier to administer your DynamoDB data, help you maximize your application availability and reduce your DynamoDB costs.

Risk Level

Low

Address

Reliability, Cost Optimization, Operational Maturity, Performance, Security

Compliance Standards

HIPAA, NIST, AWSWAF

Triage and Remediation

Remediation

Using Console

To remediate the misconfiguration of DynamoDB tables not having autoscaling enabled in AWS using the AWS Management Console, follow these steps:
  1. Login to AWS Console: Go to the AWS Management Console (https://aws.amazon.com/console/) and log in to your AWS account.
  2. Navigate to DynamoDB Service: Click on the “Services” at the top left corner of the console, then select “DynamoDB” under the Database category.
  3. Select the Table: From the list of DynamoDB tables, select the table for which you want to enable autoscaling.
  4. Modify Table: In the table details page, click on the “Capacity” tab.
  5. Enable Autoscaling: Under the “Table settings” section, find the “Auto Scaling” option and click on the “Modify” button.
  6. Configure Autoscaling: In the “Auto Scaling” section, you can configure the read and write capacity settings for autoscaling. You can choose to enable autoscaling for read capacity, write capacity, or both.
  7. Set Capacity Limits: Set the minimum and maximum capacity units for the read and write capacity. You can also set the target utilization percentage for autoscaling.
  8. Save Changes: Once you have configured the autoscaling settings, click on the “Save” button to apply the changes.
  9. Verify Autoscaling: After saving the changes, DynamoDB will start autoscaling the read and write capacity based on the configured settings.
By following these steps, you can remediate the misconfiguration of DynamoDB tables not having autoscaling enabled in AWS using the AWS Management Console.

To remediate the misconfiguration of DynamoDB tables not having autoscaling enabled in AWS using AWS CLI, follow these steps:
  1. List all the DynamoDB tables in your AWS account to identify which tables do not have autoscaling enabled:
aws dynamodb list-tables
  1. For each table that does not have autoscaling enabled, update the table to enable autoscaling using the following command:
aws dynamodb update-table \
    --table-name YOUR_TABLE_NAME \
    --billing-mode PAY_PER_REQUEST \
    --provisioned-throughput ReadCapacityAutoScalingSettings={MinimumCapacity=1,MaximumCapacity=100,AutoScalingDisabled=false,TargetTrackingScalingPolicy={TargetValue=70.0,PredefinedMetricSpecification={PredefinedMetricType=DynamoDBReadCapacityUtilization}}},WriteCapacityAutoScalingSettings={MinimumCapacity=1,MaximumCapacity=100,AutoScalingDisabled=false,TargetTrackingScalingPolicy={TargetValue=70.0,PredefinedMetricSpecification={PredefinedMetricType=DynamoDBWriteCapacityUtilization}}}
Replace YOUR_TABLE_NAME with the name of the DynamoDB table that you want to enable autoscaling for.
  1. Verify that autoscaling is enabled for the DynamoDB table by describing the table and checking the BillingMode and ProvisionedThroughput settings:
aws dynamodb describe-table --table-name YOUR_TABLE_NAME
By following these steps, you can remediate the misconfiguration of DynamoDB tables not having autoscaling enabled in AWS using AWS CLI.
To remediate the misconfiguration of DynamoDB tables not having autoscaling enabled in AWS using Python, follow these steps:
  1. Import the necessary libraries:
import boto3
  1. Initialize the DynamoDB client:
dynamodb = boto3.client('dynamodb')
  1. List all the DynamoDB tables:
response = dynamodb.list_tables()
tables = response['TableNames']
  1. Enable autoscaling for each table:
for table_name in tables:
    response = dynamodb.update_table(
        TableName=table_name,
        ProvisionedThroughput={
            'ReadCapacityUnits': 5,  # Set your desired read capacity units
            'WriteCapacityUnits': 5  # Set your desired write capacity units
        },
        BillingMode='PROVISIONED',  # Set the billing mode to PROVISIONED
        GlobalSecondaryIndexUpdates=[
            {
                'Update': {
                    'IndexName': 'string',
                    'ProvisionedThroughput': {
                        'ReadCapacityUnits': 5,  # Set your desired read capacity units
                        'WriteCapacityUnits': 5  # Set your desired write capacity units
                    }
                }
            },
        ],
        StreamSpecification={
            'StreamEnabled': False
        },
        SSESpecification={
            'Enabled': False
        },
        TimeToLiveSpecification={
            'Enabled': False
        },
        BillingMode='PAY_PER_REQUEST'  # Set the billing mode to PAY_PER_REQUEST for autoscaling
    )
  1. Replace the placeholder values like 'ReadCapacityUnits': 5 and 'WriteCapacityUnits': 5 with your desired values for read and write capacity units.
  2. Run the Python script to enable autoscaling for all DynamoDB tables.
By following these steps and running the Python script, you can remediate the misconfiguration of DynamoDB tables not having autoscaling enabled in AWS.

Additional Reading: