Skip to content
codewithmuhPublic

About

Production-ready Terraform module to provision an Amazon Redshift Data Warehouse cluster with custom VPC, subnet groups, security groups, and IAM roles.

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

3 stars

Watchers

1 watching

Forks

Amazon Redshift Data Warehouse Provisioning with Terraform

License: MIT Release Terraform Amazon Redshift Analytics

Production-ready Infrastructure as Code (IaC) blueprint using Terraform to provision an Amazon Redshift Cloud Data Warehouse. This module automatically deploys an isolated Virtual Private Cloud (VPC), multi-AZ Redshift subnet groups, dedicated security groups, IAM roles for S3 data lake access, and a fully configured Redshift cluster.


Infrastructure Architecture

flowchart TD
    Analytics["BI & SQL Clients (psql / DBeaver / Metabase)"] -->|TCP:5439| SG["Redshift Security Group"]
    
    subgraph VPC ["AWS Virtual Private Cloud (10.0.0.0/16)"]
        IGW["Internet Gateway"]
        
        subgraph SubnetGroup ["Redshift Subnet Group"]
            SubnetA["Subnet 1 (us-east-1a) 10.0.1.0/24"]
            SubnetB["Subnet 2 (us-east-1b) 10.0.2.0/24"]
        end
        
        subgraph RedshiftCluster ["Amazon Redshift Cluster"]
            Node["Redshift Node (dc2.large / ra3.4xlarge)"]
            DB[("OLAP Database: analytics_dw")]
        end
        
        SG --> RedshiftCluster
        SubnetA --> RedshiftCluster
        SubnetB --> RedshiftCluster
    end
    
    RedshiftCluster -.->|AssumeRole| IAM["IAM Role: redshift_role"]
    IAM -.->|S3 Copy / Unload| S3[("Amazon S3 Data Lake")]
Loading

Key Highlights

  • Turnkey IaC Deployment: Single-command Terraform provisioning of all supporting networking and IAM assets.
  • Multi-AZ Subnet Isolation: Redshift Subnet Group spanned across two Availability Zones for enhanced reliability.
  • S3 Data Lake Integration: Pre-configured IAM role granting Amazon Redshift permissions to execute fast parallel COPY and UNLOAD commands with Amazon S3.
  • Zero Secrets Hardcoding: Parameterized variables with strict .gitignore rules preventing .tfstate or sensitive .tfvars from being committed.

Configuration Variables

Variable Description Example Value
aws_region Target AWS deployment region us-east-1
profile AWS CLI authentication profile name default
vpc_cidr IPv4 CIDR block for the Redshift VPC 10.0.0.0/16
redshift_subnet_cidr_first First AZ subnet CIDR 10.0.1.0/24
redshift_subnet_cidr_second Second AZ subnet CIDR 10.0.2.0/24
rs_cluster_identifier Unique cluster identifier redshift-cluster-demo
rs_database_name Initial database name analytics_dw
rs_master_username Cluster administrator username admin_user
rs_master_pass Cluster administrator master password StrongSecret123!
rs_nodetype Redshift node compute type dc2.large
rs_cluster_type Cluster architecture (single-node or multi-node) single-node

Deployment Guide

Prerequisites


Step-by-Step Deployment

1. Clone & Configure

git clone https://github.com/codewithmuh/redshift.git
cd redshift

# Create your custom variable file from the template
cp terraform.tfvars.example terraform.tfvars

Update terraform.tfvars with your desired database credentials and cluster specifications.

2. Provision Infrastructure

# Initialize Terraform
terraform init

# Validate configuration syntax
terraform validate

# Review execution plan
terraform plan

# Deploy Redshift cluster
terraform apply

3. Connect to Redshift

Once provisioned, connect using psql, Python, or your preferred SQL IDE:

psql -h <CLUSTER_ENDPOINT> -p 5439 -U admin_user -d analytics_dw
import psycopg2

conn = psycopg2.connect(
    dbname="analytics_dw",
    user="admin_user",
    password="YourStrongMasterPassword123!",
    host="your-cluster.xxx.us-east-1.redshift.amazonaws.com",
    port=5439
)

4. Clean Up / Teardown

terraform destroy

Author & Community

License

This project is open-source under the MIT License.

About

Production-ready Terraform module to provision an Amazon Redshift Data Warehouse cluster with custom VPC, subnet groups, security groups, and IAM roles.

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages