Idle Redshift clusters bill by the hour - even when nobody queries them
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-clusteraws redshift pause-clusteraws redshift create-cluster-snapshot