How to create an RDS instance with Terraform
Check out our Terraform RDS cheatsheet that makes it easy to create a database instance.


Terraform's RDS support makes it easy to create a database instance. Here's a cheatsheet:
resource "aws_db_instance" "mydb1" {
allocated_storage = 256 # gigabytes
backup_retention_period = 7 # in days
db_subnet_group_name = "${var.rds_public_subnet_group}"
engine = "postgres"
engine_version = "9.5.4"
identifier = "mydb1"
instance_class = "db.r3.large"
multi_az = false
name = "mydb1"
parameter_group_name = "mydbparamgroup1" # if you have tuned it
password = "${trimspace(file("${path.module}/secrets/mydb1-password.txt"))}"
port = 5432
publicly_accessible = true
storage_encrypted = true # you should always do this
storage_type = "gp2"
username = "mydb1"
vpc_security_group_ids = ["${aws_security_group.mydb1.id}"]
}
Here's the security group you need:
resource "aws_security_group" "mydb1" {
name = "mydb1"
description = "RDS postgres servers (terraform-managed)"
vpc_id = "${var.rds_vpc_id}"
# Only postgres in
ingress {
from_port = 5432
to_port = 5432
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# Allow all outbound traffic.
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
You can get these values from the EC2 console (don't forget them!):
variable "rds_vpc_id" {
default = "vpc-XXXXXXXX"
description = "Our default RDS virtual private cloud (rds_vpc)."
}
variable "rds_public_subnets" {
default = "subnet-YYYYYYYY,subnet-YYYYYYYY,subnet-YYYYYYYY,subnet-YYYYYYYY"
description = "The public subnets of our RDS VPC rds-vpc."
}
variable "rds_public_subnet_group" {
default = "default-vpc-XXXXXXXX"
description = "Apparently the group name, according to the RDS launch wizard."
}

Seamus Abshere
Seamus Abshere is Faraday’s Co-founder and CTO (and serves as CISO), leading the technical vision behind the company’s consumer modeling platform. At Faraday, he focuses on building an API for consumer modeling and the infrastructure that helps customers turn first-party data into more actionable predictions. Before Faraday, Seamus was an Engineering Director at Brighter Planet. He studied Anthropology and Computer Science at Princeton University and is based in Burlington, Vermont.
Ready for easy AI?
Skip the ML struggle and focus on your downstream application. We have built-in demographic data so you can get started with just your PII.