Skip to main content

Amazon RDS

Overview

The AWS RDS Module provides a reusable and scalable way to provision and manage Amazon Relational Database Service (RDS) instances using Terraform. It abstracts the complexity of configuring RDS resources and enables developers to define infrastructure with minimal effort while following AWS best practices.

This module supports both resource creation and data sources for managing RDS instances, parameter groups, subnet groups, and snapshots in a consistent and modular way.


Features

  • 🚀 Reusable & Modular – Predefined structure for resources and data modules.
  • 🔐 Security Best Practices – Supports encryption, IAM roles, security groups, and parameter groups.
  • High Availability – Configure Multi-AZ deployments and automatic failover.
  • 📊 Monitoring & Logging – Enable CloudWatch logs and enhanced monitoring for insights.
  • 🗂 Parameter & Option Groups – Manage custom DB configurations at scale.
  • 💾 Backups & Snapshots – Supports automated backups and snapshot management.
  • 🌐 Network Isolation – Supports VPC, subnets, and security groups for secure access.
  • 🧩 Extensible – Easy to integrate with other Terraform modules and AWS services.

Core Concepts

  1. Resources Module

    • Creates and manages RDS instances and related configurations.
    • Includes support for:
      • DB Instance creation (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, etc.)
      • Multi-AZ deployment
      • DB Subnet Groups
      • Security Group attachments
      • Parameter & Option Groups
      • Automated Backups & Maintenance Windows
      • Monitoring & CloudWatch integration
  2. Data Module

    • Fetches information about existing RDS resources.
    • Useful for referencing attributes such as endpoint, port, and DB identifiers.
    • Helps in integrating existing RDS instances with other infrastructure components.
  3. Snapshots Management

    • Supports creating and managing RDS snapshots.
    • Allows restoring databases from existing snapshots.
    • Provides flexibility for backup and disaster recovery.
  4. Separation of Concerns

    • resources/ handles RDS instance creation, subnet groups, and parameter configurations.
    • data/ is focused on reading and referencing existing RDS resources.
    • This separation ensures clarity, reusability, and modular design.

Sample Usage

# DEPLOY ANANTA CLOUD'S S3 MODULE

module "RDS" {
source = "github.com/anantacloud/terraform-aws-rds-module/modules/resources"

# ==========================
# REQUIRED VARIABLES
# ==========================
identifier = "my-rds-instance"
engine = "mysql"
engine_version = "8.0"
instance_class = "db.t3.micro"
allocated_storage = 20
username = "admin"
password = "yourpassword"
db_subnet_group = "my-db-subnet-group"

# ==========================
# OPTIONAL VARIABLES
# ==========================
multi_az = false
publicly_accessible = false
storage_encrypted = true

backup_retention_period = 7
backup_window = "03:00-06:00"

maintenance_window = "sun:05:00-sun:06:00"

tags = {
Environment = "dev"
Project = "my-app"
}
}

Required

NameDescriptionTypeExample
identifierName of the RDS instancestring"my-rds-instance"
engineDatabase engine (e.g., mysql, postgres)string"mysql"
engine_versionVersion of the database enginestring"8.0"
instance_classThe instance type of the RDS instancestring"db.t3.micro"
allocated_storageStorage size (in GB)number20
usernameMaster DB usernamestring"admin"
passwordMaster DB passwordstring"mypassword123"
db_subnet_groupName of the DB subnet groupstring"my-db-subnet-group"

Optional

NameDescriptionTypeDefault
multi_azDeploy RDS in multiple availability zonesboolfalse
publicly_accessibleWhether the DB instance is publicly accessibleboolfalse
storage_encryptedWhether to enable storage encryptionbooltrue
backup_retention_periodNumber of days to retain backupsnumber7
backup_windowDaily time range for automated backupsstring"03:00-06:00"
maintenance_windowWeekly time range for maintenancestring"sun:05:00-sun:06:00"
tagsKey-value mapping of resource tagsmap{}