Overcast is alpha — behaviour and APIs may change between releases. Pin your version and read the changelog before upgrading.

overcast

RDS — Relational Database Service

Quick start, the engines and Aurora shapes started for real, readiness and failure reporting, per-caller endpoints, and the backups, replicas and failover that are absent.

CreateDBInstance starts a real database container, and the instance reports available only once that engine is genuinely accepting connections.

Status: ⚠️ Partial

Quick start

export AWS_ENDPOINT_URL=http://localhost:4566

aws rds create-db-instance --db-instance-identifier mydb \
  --engine postgres --db-instance-class db.t3.micro \
  --allocated-storage 20 --master-username app --master-user-password secret99

aws rds wait db-instance-available --db-instance-identifier mydb
aws rds describe-db-instances --db-instance-identifier mydb \
  --query 'DBInstances[0].Endpoint'
# → { "Address": "127.0.0.1", "Port": 33060 }  on the host
psql -h 127.0.0.1 -p 33060 -U app postgres

Any credentials work; with none configured, run eval "$(overcast env)" first — see Using AWS SDKs and CLI.

First boot takes roughly half a minute — the engine has to initialise its data directory before it accepts anything.

What works

AreaBehaviour
Real enginesMySQL, PostgreSQL, MariaDB and both Aurora variants, in containers, with ports allocated from RDS_PORT_BASE (default 33060)
Honest readinessavailable means Overcast opened a TCP connection, ran the credential initialisation, and the engine’s own readiness client confirmed the final server is listening — on create and on start alike
Failure is terminalA container that exits, cannot be created, or misses engine readiness within five minutes goes to failed. Nothing is left in creating or starting forever
Per-caller endpoints{id}.{region}.rds.{base} resolves to the engine container from a Lambda or ECS task, on the engine’s own port; the host gets the published port. One stack output works from both sides
AuroraClusters, member instances that inherit the cluster’s placement and credentials, writer promotion on deleting the writer, and both cluster endpoint names
Master accountA real administrator account with the privileges AWS grants — CREATEDB/CREATEROLE/rds_superuser on PostgreSQL, the version-appropriate grant set on the MySQL family
Password rotationModifyDBInstance and ModifyDBCluster run the engine’s own ALTER USER, so the old password really stops working
ReachabilityPubliclyAccessible decides it, not just metadata — an instance in a subnet group is reachable only from that VPC unless it is public, in which case it stays on the shared data plane too. ModifyDBInstance re-attaches a running container when the flag changes
CloudFormationA DBInstance or DBCluster is not CREATE_COMPLETE until the database is available, so anything downstream of it waits, as on AWS
DiagnosticsDescribeEvents records the lifecycle, including why an instance failed; the console’s Logs tab reads the container’s output
PersistenceContainers survive an Overcast restart, and one Overcast never reclaims another’s — engine containers carry the identity of the state store that created them

Differences from AWS

AreaOn AWSOvercast
Reader endpointServes the replicasServes the writer — every member has its own storage, so reads are not distributed and replica lag cannot be reproduced
Backup and maintenance windows, parameter groups, security groups, log exportsActed onStored and reported, never acted on
SnapshotsSnapshot, restore and point-in-time recoveryNot implemented
EngineVersionThe exact version is provisionedAny version is accepted; one with no image of its own is served by the nearest in its family, and the substitution is logged
EnginesSQL Server, Oracle, Db2 and the restPostgreSQL, MySQL, MariaDB and Aurora only — see RDS limitations
FailoverFailoverDBCluster promotes a replicaNo such operation; deleting the writer is the only way to trigger a promotion

Full engine matrix and cluster-setting behaviour: RDS limitations. Privileges, password rules and rotation: RDS master account and passwords. Symptoms and fixes: RDS troubleshooting.

Gotchas

OVERCAST_RDS_MODE=mock reaches available in a moment and starts no container, while DescribeDBInstances still reports an address and port with nothing listening on them. Use it when you are testing the control plane; keep the default if your code connects.

Caution

Promoting a new writer moves both cluster endpoint names onto its container, which means detaching and re-attaching it to its Docker networks. Connections held open to that container over those networks are dropped — the same interruption a real failover causes.

Operations

24 of 34 listed operations are implemented. Per-operation status, notes and AWS API links: RDS operations.