Skip to content

blackbird-cloud/terraform-aws-baserow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS Baserow Terraform Module

Deploy a Baserow instance easily on AWS using Terraform. This module sets up the necessary infrastructure components including VPC, RDS, ElastiCache, and security groups.

Setup

  1. Ensure you have Terraform installed. You can download it from terraform.io.
  2. Configure your AWS credentials. You can do this by setting environment variables or using the AWS CLI.
  3. Clone this repository to your local machine.
  4. Navigate to the cloned directory and run terraform init to initialize the Terraform configuration.
  5. Update the terraform.tfvars file with your desired configuration values.
  6. Run terraform apply to create the infrastructure.

Configuration

The module can be configured using the following variables:

Requirements

Name Version
terraform >= 1.13.0
aws ~> 6.0
helm ~> 3.0
postgresql 1.26.0
random ~> 3.6

Providers

Name Version
aws 6.13.0
helm 3.0.2
postgresql 1.26.0
random 3.7.2

Resources

Name Type
aws_cloudwatch_log_group.client_vpn resource
aws_cloudwatch_log_group.waf resource
aws_iam_access_key.baserow_smtp resource
aws_iam_user.baserow_smtp resource
aws_iam_user_policy.baserow_smtp_send resource
aws_kms_key.backup resource
aws_kms_key.rds resource
aws_kms_key.s3 resource
aws_kms_key.valkey resource
aws_route53_record.dkim resource
aws_route53_record.dmarc resource
aws_route53_zone.public resource
aws_security_group.client_vpn resource
aws_security_group.db resource
aws_security_group.valkey resource
aws_sesv2_configuration_set.main resource
aws_sesv2_configuration_set_event_destination.main resource
aws_sesv2_email_identity.main resource
aws_sesv2_email_identity_policy.smtp resource
helm_release.baserow resource
helm_release.metrics_server resource
helm_release.opentelemetry resource
postgresql_database.baserow resource
postgresql_grant.baserow_database resource
postgresql_grant.baserow_function resource
postgresql_grant.baserow_schema resource
postgresql_grant.baserow_sequence resource
postgresql_grant.baserow_table resource
postgresql_role.baserow resource
random_password.baserow_postgres_role resource
random_password.valkey resource
aws_availability_zones.available data source
aws_caller_identity.current data source
aws_eks_cluster_auth.cluster data source
aws_secretsmanager_secret.postgres_password data source
aws_secretsmanager_secret_version.postgres_password data source

Inputs

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)
[
"10.10.20.0/24",
"10.10.21.0/24"
]
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)
[
"t3.xlarge"
]
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)
[
"t3.xlarge"
]
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)
[
"10.10.30.0/24",
"10.10.31.0/24"
]
no
name Base name/prefix for all resources string "baserow" no
private_subnet_cidrs List of private subnet CIDRs (one per AZ) list(string)
[
"10.10.10.0/24",
"10.10.11.0/24"
]
no
public_subnet_cidrs List of public subnet CIDRs (one per AZ) list(string)
[
"10.10.0.0/24",
"10.10.1.0/24"
]
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)
{
"Project": "baserow",
"Terraform": "true"
}
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

Outputs

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.

Running Costs

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.md

About

We 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

Copyright © 2017-2025 Blackbird Cloud

blackbird-logo

About

An example deployment of Baserow on AWS, using Terraform and Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages