MicroStack
↑↓ navigate ↵ select esc close
GitHub

RDS

MicroStack's RDS handler provides metadata-only emulation of the RDS API — DB instances, clusters, global clusters, proxies, parameter groups, subnet groups, snapshots, and event subscriptions. No actual database engine is started.

Supported Operations

DB Instances

  • CreateDBInstance, DescribeDBInstances, ModifyDBInstance, DeleteDBInstance
  • RebootDBInstance, StopDBInstance, StartDBInstance

DB Clusters

  • CreateDBCluster, DescribeDBClusters, ModifyDBCluster, DeleteDBCluster
  • StopDBCluster, StartDBCluster

Subnet Groups

  • CreateDBSubnetGroup, DescribeDBSubnetGroups, ModifyDBSubnetGroup, DeleteDBSubnetGroup

Parameter Groups

  • CreateDBParameterGroup, DescribeDBParameterGroups, DeleteDBParameterGroup, DescribeDBParameters, ModifyDBParameterGroup
  • CreateDBClusterParameterGroup, DescribeDBClusterParameterGroups, DeleteDBClusterParameterGroup

Snapshots

  • CreateDBSnapshot, DescribeDBSnapshots, DeleteDBSnapshot, CopyDBSnapshot
  • CreateDBClusterSnapshot, DescribeDBClusterSnapshots, DeleteDBClusterSnapshot

Proxies and Global Clusters

  • CreateDBProxy, DescribeDBProxies, DeleteDBProxy
  • CreateGlobalCluster, DescribeGlobalClusters, ModifyGlobalCluster, DeleteGlobalCluster, RemoveFromGlobalCluster

Other

  • CreateOptionGroup, DescribeOptionGroups, DeleteOptionGroup
  • CreateEventSubscription, DescribeEventSubscriptions, DeleteEventSubscription
  • AddTagsToResource, ListTagsForResource, RemoveTagsFromResource
  • DescribeOrderableDBInstanceOptions, DescribeEngineDefaultClusterParameters, DescribeDBEngineVersions

Usage

var rds = new AmazonRDSClient(
new BasicAWSCredentials("test", "test"),
new AmazonRDSConfig { ServiceURL = "http://localhost:4566" });
// Create a DB instance
var instance = await rds.CreateDBInstanceAsync(new CreateDBInstanceRequest
{
DBInstanceIdentifier = "my-postgres-db",
DBInstanceClass = "db.t3.micro",
Engine = "postgres",
MasterUsername = "admin",
MasterUserPassword = "password123",
DBName = "appdb",
AllocatedStorage = 20,
});
Console.WriteLine(instance.DBInstance.DBInstanceStatus); // available
Console.WriteLine(instance.DBInstance.Endpoint.Address); // synthetic endpoint
// Describe instances
var describe = await rds.DescribeDBInstancesAsync(new DescribeDBInstancesRequest());
foreach (var db in describe.DBInstances)
{
Console.WriteLine($"{db.DBInstanceIdentifier}: {db.Engine} ({db.DBInstanceStatus})");
}

DB Clusters (Aurora)

// Create a cluster
var cluster = await rds.CreateDBClusterAsync(new CreateDBClusterRequest
{
DBClusterIdentifier = "my-aurora-cluster",
Engine = "aurora-postgresql",
MasterUsername = "admin",
MasterUserPassword = "password123",
DatabaseName = "appdb",
});
Console.WriteLine(cluster.DBCluster.Status); // available

Subnet Groups

// Create a DB subnet group (requires existing subnets via EC2)
var subnetGroup = await rds.CreateDBSubnetGroupAsync(new CreateDBSubnetGroupRequest
{
DBSubnetGroupName = "my-db-subnets",
DBSubnetGroupDescription = "Subnets for RDS",
SubnetIds = ["subnet-abc123", "subnet-def456"],
});
Console.WriteLine(subnetGroup.DBSubnetGroup.DBSubnetGroupName);