AWS

CloudFrontTooManyDistributions - CloudFront Too Many Distributions

Hitting a **CloudFrontTooManyDistributions** error means you've reached the maximum number of CloudFront distributions allowed in your AWS account—the default limit is 200 distributions per account, and you can't create more until you delete some or request a limit increase. This client-side error (4xx) happens when AWS enforces CloudFront distribution limits. Most common when account distribution limits are reached, but also appears when too many active distributions exist, distribution limits are exceeded, account-level limits are reached, or maximum distributions are created.

#Common Causes

  • Identity: IAM policy allows CloudFront but distribution limit reached. Service Control Policy (SCP) enforces distribution limits.
  • Network: VPC endpoint CloudFront distribution restrictions. Account-level distribution limits.
  • Limits: Account distribution limit reached (default: 200 per account). Too many active distributions. Distribution limit exceeded. Account-level limit reached. Maximum distributions created.

Solutions

  1. 1Step 1: Diagnose - Check current distribution count: aws cloudfront list-distributions --query 'DistributionList.Quantity' --output text. Compare with limit (default: 200).
  2. 2Step 2: Diagnose - List all distributions: aws cloudfront list-distributions --query 'DistributionList.Items[*].[Id,Status,DomainName,Comment]' --output table. Identify unused distributions.
  3. 3Step 3: Diagnose - Find disabled distributions: aws cloudfront list-distributions --query "DistributionList.Items[?Enabled==`false`].[Id,Status]" --output table. These can be deleted.
  4. 4Step 4: Fix - Delete unused distributions: Disable distribution first: aws cloudfront update-distribution --id DIST_ID --distribution-config file://config.json --if-match ETAG. Then delete: aws cloudfront delete-distribution --id DIST_ID --if-match ETAG.
  5. 5Step 5: Fix - Request limit increase or consolidate: Contact AWS Support for limit increase. Or consolidate similar distributions. Review and optimize distribution usage.

</>Code Examples

Check Current CloudFront Distribution Count and Limits
1#!/bin/bash
2echo "=== Current Distribution Count ==="
3DIST_COUNT=$(aws cloudfront list-distributions \
4  --query 'DistributionList.Quantity' \
5  --output text)
6
7echo "Current distributions: ${DIST_COUNT}"
8
9# Default limit: 200 distributions per account
10LIMIT=200
11echo "Limit: ${LIMIT}"
12echo "Usage: ${DIST_COUNT} / ${LIMIT}"
13
14if [ ${DIST_COUNT} -ge ${LIMIT} ]; then
15  echo "\n✗ Distribution limit reached (CloudFrontTooManyDistributions)"
16else
17  echo "\n✓ Within distribution limit"
18fi
19
20# List all distributions
21echo "\n=== All Distributions ==="
22aws cloudfront list-distributions \
23  --query 'DistributionList.Items[*].[Id,Status,DomainName,Comment]' \
24  --output table
Find Disabled Distributions for Deletion
1#!/bin/bash
2echo "=== Disabled Distributions ==="
3aws cloudfront list-distributions \
4  --query "DistributionList.Items[?Enabled==`false`].[Id,Status]" \
5  --output table
6
7echo "\n=== Disabled Distribution Count ==="
8DISABLED_COUNT=$(aws cloudfront list-distributions \
9  --query "length(DistributionList.Items[?Enabled==`false`])" \
10  --output text)
11
12echo "Disabled distributions: ${DISABLED_COUNT}"
13
14if [ ${DISABLED_COUNT} -gt 0 ]; then
15  echo "\n✓ These distributions can be deleted"
16  echo "Note: Distributions must be disabled before deletion"
17else
18  echo "\nNo disabled distributions found"
19fi
Disable and Delete CloudFront Distribution
1#!/bin/bash
2DIST_ID="E1234567890ABC"
3
4echo "=== Disabling Distribution ==="
5echo "Distribution ID: ${DIST_ID}"
6
7# Get distribution config
8echo "\n=== Getting Distribution Config ==="
9aws cloudfront get-distribution-config \
10  --id ${DIST_ID} > dist-config.json
11
12# Extract ETag
13ETAG=$(jq -r '.ETag' dist-config.json 2>/dev/null)
14echo "ETag: ${ETAG}"
15
16# Update config to disable (set Enabled: false)
17echo "\n=== Updating Config to Disable ==="
18jq '.DistributionConfig.Enabled = false' dist-config.json > dist-config-disabled.json
19
20# Update distribution
21aws cloudfront update-distribution \
22  --id ${DIST_ID} \
23  --distribution-config file://dist-config-disabled.json \
24  --if-match ${ETAG} \
25  --output json
26
27if [ $? -eq 0 ]; then
28  echo "\n✓ Distribution disabled"
29  echo "Wait for deployment, then delete distribution"
30  echo "\n=== Delete Distribution ==="
31  echo "aws cloudfront delete-distribution --id ${DIST_ID} --if-match NEW_ETAG"
32else
33  echo "\n✗ Failed to disable distribution"
34fi

Related Errors

Provider Information

This error code is specific to AWS services. For more information, refer to the official AWS documentation.

CloudFrontTooManyDistributions - CloudFront Too Many Distributions | AWS Error Reference | Error Code Reference