Redshift clusters should have Multi-AZ deployments enabled
A single-AZ Redshift cluster becomes completely unavailable if that Availability Zone experiences an outage. For production data warehouses that power dashboards, reports, or downstream pipelines, even a brief interruption can cascade into missed SLAs and stale analytics. Multi-AZ Redshift maintains a standby cluster in a second AZ with automatic failover, typically completing recovery in minutes rather than the hours required to restore from a snapshot.
The cost is real (roughly double the compute spend), but for workloads where query availability matters, the tradeoff is straightforward. If the cluster doesn't warrant that investment, document the exception rather than leaving it ambiguous.
Retrofit consideration
Enabling Multi-AZ on an existing single-AZ cluster triggers a modification that may cause a brief outage during the maintenance window. It also requires RA3 node types; clusters on DC2 or DS2 nodes must be migrated first, which involves a resize operation.
Implementation
Choose the approach that matches how you manage Terraform.
If you use terraform-aws-modules/redshift/aws, set the right module inputs for this control. You can later migrate to the compliance.tf module with minimal changes because it is compatible by design.
module "redshift" {
source = "terraform-aws-modules/redshift/aws"
version = ">=7.0.0,<8.0.0"
automated_snapshot_retention_period = 7
cluster_identifier = "abc123"
create_cloudwatch_log_group = true
database_name = "mydb"
logging = {
log_destination_type = "cloudwatch"
log_exports = ["connectionlog", "userlog", "useractivitylog"]
}
master_password_wo = "change-me-in-production"
master_username = "admin"
node_type = "ra3.xlplus"
number_of_nodes = 2
subnet_ids = ["subnet-12345678", "subnet-12345678", "subnet-12345678"]
vpc_id = "vpc-12345678"
vpc_security_group_ids = ["sg-12345678"]
multi_az = true
}
Use AWS provider resources directly. See docs for the resources involved: aws_redshift_cluster.
resource "aws_redshift_cluster" "this" {
automated_snapshot_retention_period = 7
cluster_identifier = "pofix-abc123"
cluster_subnet_group_name = "example-redshift-subnet-group"
master_password = "ChangeMe123!"
master_username = "admin"
node_type = "ra3.large"
number_of_nodes = 2
skip_final_snapshot = true
multi_az = true
}
What this control checks
The aws_redshift_cluster resource must have multi_az set to true. It fails when multi_az is omitted or false. One dependency worth flagging: Multi-AZ requires RA3 node types (ra3.xlplus, ra3.4xlarge, or ra3.16xlarge). Pairing multi_az = true with dc2.large or any DS2 type causes an API error at apply time, not plan time, so the failure won't surface until after Terraform attempts the create or modify.
Common pitfalls
RA3 node type requirement
Multi-AZ is only supported on RA3 node types. Setting
multi_az = truewithdc2.largeor any DS2 variant will be accepted at plan time and rejected at apply time with an API error. This means a failed deployment, not a Terraform validation warning. Checknode_typecompatibility before enabling.Cost doubles with Multi-AZ
Enabling
multi_az = trueprovisions a standby cluster in a second AZ, effectively doubling compute costs. A 3-nodera3.4xlargecluster at on-demand pricing goes from roughly $9,700/month to $19,400/month. Teams sometimes enable it in dev or staging to pass controls and then get surprised by the bill.Region and AZ availability
Multi-AZ Redshift is not available in every AWS region. Attempting to enable it in an unsupported region fails at apply time. Check the Redshift documentation for current regional support before codifying
multi_az = truein shared modules.Snapshot restore does not inherit Multi-AZ
Restoring from a snapshot via
snapshot_identifierdoes not carry over the source cluster's Multi-AZ setting. Themulti_azargument must be explicitly set totrueon the restoredaws_redshift_clusterresource, or the cluster comes back up single-AZ.
Audit evidence
Config rule evaluation results showing clusters as COMPLIANT for the Multi-AZ check, or equivalent Security Hub findings, are the primary evidence. The Redshift console cluster details page shows Multi-AZ status directly. For programmatic collection, aws redshift describe-clusters returns the MultiAZ field (boolean) for each cluster and can be scripted across accounts and regions.
Supporting documentation should include exception records for any clusters intentionally left in single-AZ mode, with business justification and risk acceptance sign-off.
Framework-specific interpretation
Related controls
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
redshift_cluster_multiple_az_enabledAWS Config Managed Rule:
REDSHIFT_CLUSTER_MULTI_AZ_ENABLEDPowerpipe Control:
aws_compliance.control.redshift_cluster_multiple_az_enabledProwler Check:
redshift_cluster_multi_az_enabledAWS Security Hub Control:
Redshift.18
Last reviewed: 2026-03-09