DocumentDB
Amazon DocumentDB control plane: clusters, instances, snapshots, restore, parameter/subnet/global groups, event subscriptions, and tagging. RDS-shaped Query API.
Amazon DocumentDB
fakecloud implements the full 55-operation Amazon DocumentDB (docdb) control plane. DocumentDB reuses Amazon RDS's wire contract: it speaks the AWS Query protocol (form-encoded requests, XML responses), signs SigV4 with the rds scope, and is reached at rds.<region>.amazonaws.com. The real aws-sdk-docdb client is disambiguated from aws-sdk-rds by the api/docdb token it stamps into its user-agent; the conformance probe signs the docdb scope directly.
What is real
Everything in the control plane is real and account-partitioned, and persists across restarts in persistent mode:
- DB clusters —
CreateDBCluster,DeleteDBCluster,ModifyDBCluster,DescribeDBClusters,StartDBCluster,StopDBCluster,FailoverDBCluster. Clusters mint anarn:aws:rds:<region>:<acct>:cluster:<id>ARN, acluster-XXXXresource id, and writer (<id>.cluster-XXXX.<region>.docdb.amazonaws.com) + reader (<id>.cluster-ro-XXXX.…) endpoints.Engineisdocdb. - DB instances —
CreateDBInstance,DeleteDBInstance,ModifyDBInstance,DescribeDBInstances,RebootDBInstance. Instances attach to a cluster and join itsDBClusterMemberslist; the first becomes the writer. - Snapshots —
CreateDBClusterSnapshot,CopyDBClusterSnapshot,DeleteDBClusterSnapshot,DescribeDBClusterSnapshots,ModifyDBClusterSnapshotAttribute,DescribeDBClusterSnapshotAttributes.RestoreDBClusterFromSnapshotandRestoreDBClusterToPointInTimerecreate a cluster. - Storage encryption -
StorageEncryptedwithout aKmsKeyIdencrypts with the account's AWS-managedaws/rdskey for the region and reports its key ARN (a named alias or key id is reported as its key ARN). Member instances, snapshots, copies and restores carry the cluster's key; a restore or copy that names aKmsKeyIduses it. - Parameter groups — create / copy / delete / describe / modify / reset cluster parameter groups; set values round-trip through
DescribeDBClusterParameters.DescribeEngineDefaultClusterParametersreturns engine defaults. - Subnet groups, global clusters (with failover / switchover / remove-from-global), and event subscriptions (SNS topic + source filters) — full CRUD. Subnet groups resolve their subnets in EC2 and report the subnets'
VpcIdand Availability Zones (InvalidSubnetfor unknown subnets or ones spanning VPCs,DBSubnetGroupDoesNotCoverEnoughAZsbelow two zones). - Catalog + tagging —
DescribeCertificates,DescribeDBEngineVersions,DescribeOrderableDBInstanceOptions,DescribeEventCategories,DescribeEvents,DescribePendingMaintenanceActions,ApplyPendingMaintenanceAction, andAddTagsToResource/RemoveTagsFromResource/ListTagsForResource.
Model-derived faults are returned with the correct wire code and HTTP status — DBClusterNotFoundFault, DBInstanceNotFound, DBClusterAlreadyExistsFault, DBClusterSnapshotNotFoundFault, DBParameterGroupNotFound, DBSubnetGroupNotFoundFault, GlobalClusterNotFoundFault, SubscriptionNotFound, and the rest.
Describe filters
Filters is honored on the three operations in the table below -- the ones DocumentDB documents filter names for. Most other Describes model the parameter but AWS documents it as not currently supported there, so it is accepted and ignored, matching AWS. The exception is DescribePendingMaintenanceActions, which does document db-cluster-id and db-instance-id: it reports no pending actions at all, so there is nothing for a filter to narrow. Filters are AND-ed with each other and with the operation's own identifier parameter; the values inside one filter are OR-ed.
| Operation | Supported filter names |
|---|---|
DescribeDBClusters | db-cluster-id |
DescribeDBInstances | db-cluster-id, db-instance-id |
DescribeGlobalClusters | db-cluster-id |
Each accepts identifiers and ARNs, as AWS documents. On DescribeGlobalClusters, db-cluster-id names a member DB cluster, not the global cluster wrapping it: filtering by a member's identifier or ARN selects the global cluster containing it, which is how a caller holding a regional cluster finds its global parent. A global cluster's own identifier matches nothing, as on AWS.
A cluster joins a global cluster through CreateDBCluster --global-cluster-identifier (or by being the SourceDBClusterIdentifier of CreateGlobalCluster) and leaves it on delete, rename or RemoveFromGlobalCluster, so GlobalClusterMembers tracks the clusters that actually exist.
An unrecognized filter name matches no resource rather than raising: DocumentDB declares no InvalidParameterValue-equivalent on these operations, so returning one would put an error shape on the wire that the operation never declares. The name is logged at warn, since nothing on the wire explains the empty result.
Honest gap: no data plane
fakecloud does not run a real DocumentDB (MongoDB-compatible) engine. RDS boots real Postgres/MySQL containers, but there is no equivalent DocumentDB engine image, so DocumentDB is control-plane only: clusters and instances are records with well-formed endpoints that accept no wire connections. Everything else — lifecycle, snapshots, restore, parameter / subnet / global groups, event subscriptions, and tags — is real and persisted.