Skip to main content

Idle Redshift clusters bill by the hour - even when nobody queries them

· 3 min read
Founder, Dragon Fractal · ex-AWS engineer

Short version: Amazon Redshift bills per node-hour whether the cluster runs a million queries or zero. A multi-node cluster left over from an old analytics project can run hundreds of dollars a month for nothing. Here is how to find idle clusters and stop the bleeding - pause, snapshot-and-delete, or move to Serverless.

Why idle Redshift is expensive

Provisioned Redshift charges for compute by node, continuously. An ra3.xlplus node is $1.086/hour; a modest 2-node cluster is **$1,560/month** even if it is queried once a week. Analytics clusters are prime candidates to go idle - a dashboard project ships, the team moves on, and the cluster keeps running.

Step 1 - Find your clusters

aws redshift describe-clusters \
--query 'Clusters[].{ID:ClusterIdentifier,Node:NodeType,Count:NumberOfNodes,Status:ClusterStatus}' \
--output table

Step 2 - Check query activity

Idle means almost no queries. Pull the last 7 days of query volume from CloudWatch:

aws cloudwatch get-metric-statistics \
--namespace AWS/Redshift --metric-name QueriesCompletedPerSecond \
--dimensions Name=ClusterIdentifier,Value=my-cluster \
--start-time "$(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ)" \
--end-time "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--period 86400 --statistics Sum \
--query 'Datapoints[].Sum'

Near-zero over a week is a clear idle signal.

Step 3 - Pick a fix

  • Used occasionally -> pause it. Paused clusters stop compute billing (you still pay for storage) and resume in minutes:
    aws redshift pause-cluster --cluster-identifier my-cluster
  • Not needed, but keep the data -> snapshot and delete. You can restore later from the snapshot:
    aws redshift delete-cluster --cluster-identifier my-cluster \
    --final-cluster-snapshot-identifier my-cluster-final
  • Sporadic, unpredictable use -> move to Redshift Serverless, which bills for compute only while queries run.

The caveat: know what depends on it

Before pausing or deleting, check what talks to the cluster - scheduled ETL jobs, BI tools (QuickSight, Tableau), and downstream dashboards will fail against a paused or deleted cluster. Pausing is reversible and low-risk; deleting requires the final snapshot (always take it) and confirmation that no automated job expects the cluster to be live.

Do it automatically

Cloud Cost Analyzer's idle-redshift rule flags clusters running fewer than ~10 queries/day so you can pause or retire them - alongside 89 other cost rules:

curl -sSL https://releases.dragonfractal.com/install.sh | sh
cca scan --provider aws

The agent runs in your environment with read-only access, so your AWS credentials never leave it. See the AWS setup and required IAM permissions

CLI Reference

  • aws redshift describe-cluster
  • aws redshift pause-cluster
  • aws redshift create-cluster-snapshot