AWS Cheatsheet
RDS
Use this AWS reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.
Supported Engines
| Engine | Versions | Notes |
|---|---|---|
| MySQL | 8.0, 8.4 | Most popular open-source |
| PostgreSQL | 15, 16, 17 | Feature-rich; default for new projects |
| MariaDB | 10.6, 10.11, 11.x | MySQL-compatible fork |
| Oracle | 19c, 21c | BYOL or License Included |
| SQL Server | 2019, 2022 | BYOL or LI; Windows/Linux |
| Aurora MySQL | MySQL 8.0-compatible | AWS-native; 5x faster than MySQL |
| Aurora PostgreSQL | PG 15/16-compatible | 3x faster than PostgreSQL |
Create DB Instance
aws rds create-db-instance \ --db-instance-identifier my-db \ --db-instance-class db.t3.micro \ --engine postgres \ --engine-version 16.3 \ --master-username admin \ --master-user-password 'MyPass1!' \ --allocated-storage 20 \ --storage-type gp3 \ --vpc-security-group-ids sg-0abc123 \ --db-subnet-group-name my-subnet-group \ --no-publicly-accessible \ --backup-retention-period 7 \ --deletion-protection \ --tags Key=Env,Value=prod
Describe & Status
# List all instances aws rds describe-db-instances \ --query 'DBInstances[*].[DBInstanceIdentifier,DBInstanceStatus,Engine,DBInstanceClass,Endpoint.Address]' \ --output table # Wait until available aws rds wait db-instance-available --db-instance-identifier my-db # Get connection endpoint aws rds describe-db-instances \ --db-instance-identifier my-db \ --query 'DBInstances[0].Endpoint.Address' \ --output text
Modify Instance
# Scale up (applies during next maintenance window by default) aws rds modify-db-instance \ --db-instance-identifier my-db \ --db-instance-class db.t3.medium \ --apply-immediately # Increase storage aws rds modify-db-instance \ --db-instance-identifier my-db \ --allocated-storage 100 \ --apply-immediately # Enable Multi-AZ aws rds modify-db-instance \ --db-instance-identifier my-db \ --multi-az \ --apply-immediately # Change master password aws rds modify-db-instance \ --db-instance-identifier my-db \ --master-user-password 'NewPass1!' \ --apply-immediately
Snapshots & Backups
# Manual snapshot aws rds create-db-snapshot \ --db-instance-identifier my-db \ --db-snapshot-identifier my-db-snapshot-2024-01 # List snapshots aws rds describe-db-snapshots \ --db-instance-identifier my-db \ --query 'DBSnapshots[*].[DBSnapshotIdentifier,SnapshotCreateTime,Status,AllocatedStorage]' \ --output table # Restore from snapshot to a NEW instance aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier my-db-restored \ --db-snapshot-identifier my-db-snapshot-2024-01 \ --db-instance-class db.t3.micro # Restore to point-in-time aws rds restore-db-instance-to-point-in-time \ --source-db-instance-identifier my-db \ --target-db-instance-identifier my-db-pitr \ --restore-time 2024-01-15T12:00:00Z # Delete snapshot aws rds delete-db-snapshot --db-snapshot-identifier my-db-snapshot-2024-01
Read Replicas
# Create read replica (same region) aws rds create-db-instance-read-replica \ --db-instance-identifier my-db-replica \ --source-db-instance-identifier my-db \ --db-instance-class db.t3.micro # Create cross-region read replica aws rds create-db-instance-read-replica \ --db-instance-identifier my-db-replica-eu \ --source-db-instance-identifier arn:aws:rds:us-east-1:123:db:my-db \ --db-instance-class db.t3.micro \ --region eu-west-1 # Promote replica to standalone instance (irreversible) aws rds promote-read-replica --db-instance-identifier my-db-replica
Parameter Groups
# Create custom parameter group aws rds create-db-parameter-group \ --db-parameter-group-name my-pg16 \ --db-parameter-group-family postgres16 \ --description "Custom PG16 params" # Set parameters aws rds modify-db-parameter-group \ --db-parameter-group-name my-pg16 \ --parameters "ParameterName=max_connections,ParameterValue=200,ApplyMethod=pending-reboot" \ "ParameterName=log_min_duration_statement,ParameterValue=1000,ApplyMethod=immediate" # Attach to instance aws rds modify-db-instance \ --db-instance-identifier my-db \ --db-parameter-group-name my-pg16 \ --apply-immediately
Subnet Groups
# Create DB subnet group (spans 2+ AZs for Multi-AZ) aws rds create-db-subnet-group \ --db-subnet-group-name my-subnet-group \ --db-subnet-group-description "RDS subnets" \ --subnet-ids subnet-0priv1 subnet-0priv2 aws rds describe-db-subnet-groups
Aurora Specifics
# Create Aurora PostgreSQL cluster aws rds create-db-cluster \ --db-cluster-identifier my-aurora \ --engine aurora-postgresql \ --engine-version 16.4 \ --master-username admin \ --master-user-password 'MyPass1!' \ --db-subnet-group-name my-subnet-group \ --vpc-security-group-ids sg-0abc123 # Add writer instance aws rds create-db-instance \ --db-instance-identifier my-aurora-writer \ --db-cluster-identifier my-aurora \ --db-instance-class db.r7g.large \ --engine aurora-postgresql # Add reader instance aws rds create-db-instance \ --db-instance-identifier my-aurora-reader \ --db-cluster-identifier my-aurora \ --db-instance-class db.r7g.large \ --engine aurora-postgresql # Failover (promote a reader to writer) aws rds failover-db-cluster --db-cluster-identifier my-aurora # Aurora Serverless v2 — add to cluster aws rds create-db-instance \ --db-instance-identifier my-aurora-serverless \ --db-cluster-identifier my-aurora \ --db-instance-class db.serverless \ --engine aurora-postgresql
RDS Proxy
# Create proxy (reduces connection overhead for Lambda/containers) aws rds create-db-proxy \ --db-proxy-name my-proxy \ --engine-family POSTGRESQL \ --auth '[{"AuthScheme":"SECRETS","SecretArn":"arn:aws:secretsmanager:...","IAMAuth":"REQUIRED"}]' \ --role-arn arn:aws:iam::123:role/rds-proxy-role \ --vpc-subnet-ids subnet-0priv1 subnet-0priv2 \ --vpc-security-group-ids sg-0abc123 # Register target (the RDS instance) aws rds register-db-proxy-targets \ --db-proxy-name my-proxy \ --db-instance-identifiers my-db
Deletion
# Delete without final snapshot (non-prod) aws rds delete-db-instance \ --db-instance-identifier my-db \ --skip-final-snapshot \ --delete-automated-backups # Delete with final snapshot aws rds delete-db-instance \ --db-instance-identifier my-db \ --final-db-snapshot-identifier my-db-final-snapshot
Instance Class Quick Reference
| Class | vCPU | RAM | Use Case |
|---|---|---|---|
db.t3.micro | 2 | 1 GB | Dev/test, Free Tier |
db.t3.medium | 2 | 4 GB | Small workloads |
db.m7g.large | 2 | 8 GB | General-purpose prod |
db.r7g.large | 2 | 16 GB | Memory-intensive |
db.r7g.4xlarge | 16 | 128 GB | High-memory workloads |
db.serverless | — | Auto | Aurora Serverless v2 |