Deploy a Baserow instance easily on AWS using Terraform. This module sets up the necessary infrastructure components including VPC, RDS, ElastiCache, and security groups.
- Ensure you have Terraform installed. You can download it from terraform.io.
- Configure your AWS credentials. You can do this by setting environment variables or using the AWS CLI.
- Clone this repository to your local machine.
- Navigate to the cloned directory and run
terraform initto initialize the Terraform configuration. - Update the
terraform.tfvarsfile with your desired configuration values. - Run
terraform applyto create the infrastructure.
The module can be configured using the following variables:
| Name | Version |
|---|---|
| terraform | >= 1.13.0 |
| aws | ~> 6.0 |
| helm | ~> 3.0 |
| postgresql | 1.26.0 |
| random | ~> 3.6 |
| Name | Version |
|---|---|
| aws | 6.13.0 |
| helm | 3.0.2 |
| postgresql | 1.26.0 |
| random | 3.7.2 |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| az_count | Number of AZs to use | number |
2 |
no |
| client_vpn_cidr | Client CIDR range for the Client VPN endpoint (must be /22 or /23 and non-overlapping) | string |
"10.250.0.0/22" |
no |
| client_vpn_enabled | Whether to create the AWS Client VPN endpoint | bool |
true |
no |
| client_vpn_log_retention_days | CloudWatch log retention in days for Client VPN connection logs | number |
30 |
no |
| client_vpn_sso_group_id | SSO group ID for Client VPN access | string |
"e3249852-c0a1-70c2-c87c-99436c0caa94" |
no |
| database_subnet_cidrs | List of database subnet CIDRs (one per AZ) | list(string) |
[ |
no |
| db_engine_version | Aurora PostgreSQL engine version | string |
"17.5" |
no |
| db_instance_class | DB instance class | string |
"db.t4g.medium" |
no |
| domain_name | Domain name for Route53 record (e.g. example.com) | string |
"baserow-webinar.blackbird.cloud" |
no |
| eks_cluster_version | EKS cluster version | string |
"1.33" |
no |
| eks_spot_node_desired_size | Desired spot node count | number |
1 |
no |
| eks_spot_node_instance_types | Instance types for spot node group | list(string) |
[ |
no |
| eks_spot_node_max_size | Maximum spot node count | number |
2 |
no |
| eks_spot_node_min_size | Minimum spot node count | number |
1 |
no |
| eks_stable_node_desired_size | Desired stable node count | number |
1 |
no |
| eks_stable_node_instance_types | Instance types for stable node group | list(string) |
[ |
no |
| eks_stable_node_max_size | Maximum stable node count | number |
2 |
no |
| eks_stable_node_min_size | Minimum stable node count | number |
1 |
no |
| elasticache_subnet_cidrs | List of elasticache subnet CIDRs (one per AZ) | list(string) |
[ |
no |
| name | Base name/prefix for all resources | string |
"baserow" |
no |
| private_subnet_cidrs | List of private subnet CIDRs (one per AZ) | list(string) |
[ |
no |
| public_subnet_cidrs | List of public subnet CIDRs (one per AZ) | list(string) |
[ |
no |
| region | AWS region | string |
"eu-central-1" |
no |
| ses_identity | SES identity (domain or email) to verify and use for sending. | string |
"baserow-webinar.blackbird.cloud" |
no |
| tags | Common tags | map(string) |
{ |
no |
| valkey_node_type | Valkey / ElastiCache node type | string |
"cache.t4g.small" |
no |
| vpc_cidr | VPC CIDR block | string |
"10.10.0.0/16" |
no |
| Name | Description |
|---|---|
| aurora_endpoint | The Aurora cluster primary endpoint. |
| aurora_reader_endpoint | The Aurora cluster reader endpoint. |
| aurora_security_group_id | The security group ID for the Aurora cluster. |
| database_subnets | List of database subnet IDs. |
| eks_cluster_endpoint | The endpoint for the EKS cluster. |
| eks_cluster_name | The name of the EKS cluster. |
| elasticache_subnets | List of ElastiCache subnet IDs. |
| private_subnets | List of private subnet IDs. |
| public_subnets | List of public subnet IDs. |
| rds_kms_key_arn | KMS key ARN used for RDS/Aurora encryption |
| s3_bucket_name | Naam van de S3 bucket voor Baserow data. |
| s3_kms_key_arn | KMS key ARN used for S3 bucket encryption. |
| valkey_kms_key_arn | KMS key ARN used for Valkey/ElastiCache encryption. |
| valkey_primary_endpoint | The primary endpoint address of the ElastiCache cluster. |
| vpc_id | The ID of the VPC. |
Project: main
Name Monthly Qty Unit Monthly Cost
module.eks.module.eks_managed_node_group["stable"].aws_eks_node_group.this[0]
└─ Instance usage (Linux/UNIX, on-demand, t3.xlarge) 730 hours $140.16
module.client_vpn[0].aws_ec2_client_vpn_network_association.associations["hcl-01702e9beb30874c07511f805f215c4f2edda95df92a0d2cb9e49814f0b42635-0"]
└─ Endpoint association 730 hours $73.00
module.client_vpn[0].aws_ec2_client_vpn_network_association.associations["hcl-01702e9beb30874c07511f805f215c4f2edda95df92a0d2cb9e49814f0b42635-1"]
└─ Endpoint association 730 hours $73.00
module.eks.aws_eks_cluster.this[0]
└─ EKS cluster 730 hours $73.00
module.aurora.aws_rds_cluster_instance.this["t4g-one"]
├─ Database instance (on-demand, db.t4g.medium) 730 hours $62.05
└─ Performance Insights API Monthly cost depends on usage: $0.01 per 1000 requests
module.aurora.aws_rds_cluster_instance.this["t4g-two"]
├─ Database instance (on-demand, db.t4g.medium) 730 hours $62.05
└─ Performance Insights API Monthly cost depends on usage: $0.01 per 1000 requests
module.eks.module.eks_managed_node_group["spot"].aws_eks_node_group.this[0]
└─ Instance usage (Linux/UNIX, spot, t3.xlarge) 730 hours $56.06
module.valkey.aws_elasticache_replication_group.this[0]
└─ ElastiCache (on-demand, cache.t4g.small) 1,460 hours $42.05
module.vpc.aws_nat_gateway.this[0]
├─ NAT gateway 730 hours $37.96
└─ Data processed Monthly cost depends on usage: $0.052 per GB
module.vpc.aws_nat_gateway.this[1]
├─ NAT gateway 730 hours $37.96
└─ Data processed Monthly cost depends on usage: $0.052 per GB
module.client_vpn[0].aws_ec2_client_vpn_endpoint.vpn
└─ Connection 730 hours $36.50
module.waf.aws_wafv2_web_acl.default[0]
├─ Web ACL usage 1 months $5.00
└─ Requests Monthly cost depends on usage: $0.60 per 1M requests
aws_kms_key.backup
├─ Customer master key 1 months $1.00
├─ Requests Monthly cost depends on usage: $0.03 per 10k requests
├─ ECC GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
└─ RSA GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
aws_kms_key.rds
├─ Customer master key 1 months $1.00
├─ Requests Monthly cost depends on usage: $0.03 per 10k requests
├─ ECC GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
└─ RSA GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
aws_kms_key.s3
├─ Customer master key 1 months $1.00
├─ Requests Monthly cost depends on usage: $0.03 per 10k requests
├─ ECC GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
└─ RSA GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
aws_kms_key.valkey
├─ Customer master key 1 months $1.00
├─ Requests Monthly cost depends on usage: $0.03 per 10k requests
├─ ECC GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
└─ RSA GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
module.eks.module.kms.aws_kms_key.this[0]
├─ Customer master key 1 months $1.00
├─ Requests Monthly cost depends on usage: $0.03 per 10k requests
├─ ECC GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
└─ RSA GenerateDataKeyPair requests Monthly cost depends on usage: $0.10 per 10k requests
aws_route53_zone.public
└─ Hosted zone 1 months $0.50
aws_cloudwatch_log_group.client_vpn[0]
├─ Data ingested Monthly cost depends on usage: $0.63 per GB
├─ Archival Storage Monthly cost depends on usage: $0.0324 per GB
└─ Insights queries data scanned Monthly cost depends on usage: $0.0063 per GB
aws_cloudwatch_log_group.waf
├─ Data ingested Monthly cost depends on usage: $0.63 per GB
├─ Archival Storage Monthly cost depends on usage: $0.0324 per GB
└─ Insights queries data scanned Monthly cost depends on usage: $0.0063 per GB
aws_route53_record.dkim[0]
├─ Standard queries (first 1B) Monthly cost depends on usage: $0.40 per 1M queries
├─ Latency based routing queries (first 1B) Monthly cost depends on usage: $0.60 per 1M queries
└─ Geo DNS queries (first 1B) Monthly cost depends on usage: $0.70 per 1M queries
aws_route53_record.dkim[1]
├─ Standard queries (first 1B) Monthly cost depends on usage: $0.40 per 1M queries
├─ Latency based routing queries (first 1B) Monthly cost depends on usage: $0.60 per 1M queries
└─ Geo DNS queries (first 1B) Monthly cost depends on usage: $0.70 per 1M queries
aws_route53_record.dkim[2]
├─ Standard queries (first 1B) Monthly cost depends on usage: $0.40 per 1M queries
├─ Latency based routing queries (first 1B) Monthly cost depends on usage: $0.60 per 1M queries
└─ Geo DNS queries (first 1B) Monthly cost depends on usage: $0.70 per 1M queries
aws_route53_record.dmarc
├─ Standard queries (first 1B) Monthly cost depends on usage: $0.40 per 1M queries
├─ Latency based routing queries (first 1B) Monthly cost depends on usage: $0.60 per 1M queries
└─ Geo DNS queries (first 1B) Monthly cost depends on usage: $0.70 per 1M queries
module.acm.aws_route53_record.validation[0]
├─ Standard queries (first 1B) Monthly cost depends on usage: $0.40 per 1M queries
├─ Latency based routing queries (first 1B) Monthly cost depends on usage: $0.60 per 1M queries
└─ Geo DNS queries (first 1B) Monthly cost depends on usage: $0.70 per 1M queries
module.aurora.aws_rds_cluster.this[0]
├─ Storage Monthly cost depends on usage: $0.12 per GB
├─ I/O requests Monthly cost depends on usage: $0.22 per 1M requests
├─ Backup storage Monthly cost depends on usage: $0.023 per GB
└─ Snapshot export Monthly cost depends on usage: $0.011 per GB
module.backup.aws_backup_vault.vault
├─ EFS backup (warm) Monthly cost depends on usage: $0.06 per GB
├─ EFS backup (cold) Monthly cost depends on usage: $0.012 per GB
├─ EFS restore (warm) Monthly cost depends on usage: $0.024 per GB
├─ EFS restore (cold) Monthly cost depends on usage: $0.036 per GB
├─ EFS restore (item-level) Monthly cost depends on usage: $0.60 per requests
├─ EBS snapshot Monthly cost depends on usage: $0.054 per GB
├─ RDS snapshot Monthly cost depends on usage: $0.10 per GB
├─ DynamoDB backup Monthly cost depends on usage: $0.12 per GB
├─ DynamoDB restore Monthly cost depends on usage: $0.18 per GB
├─ Aurora snapshot Monthly cost depends on usage: $0.023 per GB
├─ FSx for Windows backup Monthly cost depends on usage: $0.054 per GB
└─ FSx for Lustre backup Monthly cost depends on usage: $0.054 per GB
module.eks.aws_cloudwatch_log_group.this[0]
├─ Data ingested Monthly cost depends on usage: $0.63 per GB
├─ Archival Storage Monthly cost depends on usage: $0.0324 per GB
└─ Insights queries data scanned Monthly cost depends on usage: $0.0063 per GB
module.s3_bucket.aws_s3_bucket.this[0]
└─ Standard
├─ Storage Monthly cost depends on usage: $0.0245 per GB
├─ PUT, COPY, POST, LIST requests Monthly cost depends on usage: $0.0054 per 1k requests
├─ GET, SELECT, and all other requests Monthly cost depends on usage: $0.00043 per 1k requests
├─ Select data scanned Monthly cost depends on usage: $0.00225 per GB
└─ Select data returned Monthly cost depends on usage: $0.0008 per GB
module.valkey.aws_cloudwatch_log_group.this["slow-log"]
├─ Data ingested Monthly cost depends on usage: $0.63 per GB
├─ Archival Storage Monthly cost depends on usage: $0.0324 per GB
└─ Insights queries data scanned Monthly cost depends on usage: $0.0063 per GB
OVERALL TOTAL $704.29
*Usage costs can be estimated by updating Infracost Cloud settings, see docs for other options.
──────────────────────────────────
158 cloud resources were detected:
∙ 30 were estimated
∙ 127 were free
∙ 1 is not supported yet, rerun with --show-skipped to see details
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Project ┃ Baseline cost ┃ Usage cost* ┃ Total cost ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━┫
┃ main ┃ $704 ┃ - ┃ $704 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━━━━━━━┛
Update with
infracost breakdown --format=table --no-color --path . --out-file=costs.mdWe are Blackbird Cloud, Amsterdam based cloud consultancy, and cloud management service provider. We help companies build secure, cost efficient, and scale-able solutions.
Checkout our other 👉 terraform modules
Copyright © 2017-2025 Blackbird Cloud
