v2.2.0
Release Notes — v2.2.0
✨ Features
Managed database services
Nine managed database and data services now work against cloudemu with their real SDKs — including the native child resources a real workload provisions, surfaced in cross-service discovery and priced in the cost catalog:
- AWS Keyspaces (Cassandra) — keyspaces, tables, and user-defined types over the JSON-1.0 wire.
- AWS MemoryDB for Redis/Valkey — clusters, subnet and parameter groups, ACLs, snapshots, and fleet-maintenance operations.
- GCP AlloyDB — clusters, instances, users, databases, and backups.
- GCP Bigtable Admin — instances, clusters, tables (with column families and GC rules), app profiles, backups, and per-resource IAM.
- Azure Managed Instance for Apache Cassandra — clusters and datacenters, deallocate/start, status, and invoke-command.
- Managed SQL — Azure SQL (including Managed Instances), Azure MySQL and PostgreSQL Flexible Server, and GCP Cloud SQL, now with their native child resources: databases, users, firewall rules, elastic pools, and failover groups.
AWS RDS & Bedrock
- RDS reaches full management-plane parity, and now appears in resource discovery with cost and CloudWatch metrics.
- Bedrock is complete across
bedrock,bedrockruntime,bedrockagent, andbedrockagentruntime.
AWS ECS
- A new ECS service, so real
aws-sdk-go-v2/service/ecsclients work against cloudemu unchanged. - EC2 managed-resource visibility —
Operator.ManagedandIncludeManagedResourcesonDescribeInstances.
Kubernetes
- A shared in-memory API server with a synchronous, deterministic reconcile engine that drives objects to a healthy running state on every write.
- The full cluster lifecycle — create → running → scale → rolling update → teardown — across EKS, GKE, and AKS.
- Real
kubectlworks end to end, not justclient-go. - Clusters and node groups appear in resource discovery.
Standalone server tooling
- Docker image — pull and run the whole emulated cloud as a container.
- Testcontainers-Go module — start cloudemu from a Go test in one line.
- Declarative seed fixtures — preload resources from a fixture file or the
/_cloudemu/seedendpoint. - Reset control plane —
/_cloudemu/resetwipes all state between tests for isolation.
S3 object versioning
- Full version history,
versionIdoperations, delete markers, and versioned multipart completion.
🔧 Enhancements
Improvements that came out of running real infrastructure provisioners against cloudemu — closing behavior gaps so full provision-and-teardown flows work end to end.
SSM Parameter Store
GetParametersByPathandDescribeParametersnow paginate, so large parameter trees come back page by page, exactly as the real service returns them.- Requesting a parameter version that doesn't exist now returns the precise
ParameterVersionNotFounderror instead of a generic "not found".
S3
ListPartsnow reports the parts you've actually uploaded to a multipart upload, and rejects part numbers outside the valid 1–10000 range.- Unsupported operations on S3 sub-resources now return
405 Method Not Allowed, matching real S3.
Azure Table Storage
$filterqueries that use unsupported expressions or partial-key predicates are now rejected with a clear error, instead of quietly returning incorrect results.$filterexpressions with extra whitespace are now parsed correctly.
Technical Details
Managed database services (#307, #305, #304, #303, #308, #309)
- Each service follows the driver → in-memory provider → portable API → SDK-compat wire-handler layering, with provider unit tests and real-SDK round-trip tests.
- Keyspaces (#307) and MemoryDB (#305) are control-plane-only and get their own drivers; AlloyDB (#304) and Managed SQL (#303) reuse the shared
relationaldbdriver and its child resources (Users/Databases/…). - Managed Cassandra (#308) models the
Microsoft.DocumentDB/cassandraClustersARM surface (cluster + datacenter parent/child, deallocate/start LRO, invoke-command, status). - Bigtable (#309) uses the
bigtableadmin/v2SDK types as the wire format for exact fidelity; recursive GC rules, per-resource IAM, and cascade delete.
RDS (#301) & Bedrock (#298)
- RDS: expanded from 24 wired actions to comprehensive management-plane parity, added to resource discovery (issue #295 workstream A) and the cost catalog.
- Bedrock: completes the driver → provider → portable API → restJson1 handler across the remaining surface, with per-subsystem unit and real-SDK round-trip tests.
ECS + EC2 managed visibility (#302, #159, #300)
- New ECS SDK-compat handler for
aws-sdk-go-v2/service/ecs. Operator.Managed+IncludeManagedResourcesonDescribeInstances, hidden by default via an account setting (ECS Managed Instances are a primary producer of managed EC2 instances).
Kubernetes runtime + discovery (#299, #297)
- Shared in-memory API server with a no-goroutine synchronous reconcile engine (deterministic).
- Full lifecycle parity across EKS/GKE/AKS; real
kubectlsupport end-to-end. - Clusters and node groups surfaced in cross-service discovery.
S3 versioning & fidelity batches (#266 workstream, #296)
- S3 real object versioning: history,
versionIdops, delete markers, versioned multipart completion. - Fidelity batches: SSM pagination, S3
ListPartsbounds and sub-resource405s, Azure table$filtervalidation, multipart parts-map guarding. - AWS provisioning-lifecycle gaps closed against a real provisioner (#296), each covered by an
aws-sdk-go-v2round-trip test.
Full Changelog: v2.1.0...v2.2.0