What's Changed
[1.3.44] — 2026-05-19
Added
- Standard AWS ECS Docker labels on
RunTaskcontainers — every container MiniStack spawns for an ECS task now carries the five canonicalcom.amazonaws.ecs.*labels real ECS sets (cluster ARN, container-name, task-arn, task-definition-family, task-definition-version), matching the keys and values documented in the AWS ECS container metadata file spec. Lets host-side log shippers, monitoring agents, anddocker ps --filter "label=…"queries identify containers the same way they would against real ECS. Contributed by @YakirOren. - Step Functions JSONata standard library expanded — the JSONata evaluator now ships every built-in function called out in the ticket, plus the parity-edge cases AWS/JSONata require: string (
$uppercase,$lowercase,$substring,$trim,$contains,$split,$join,$replace,$pad), numeric ($sum,$average,$max,$min,$abs,$floor,$ceil,$round,$power,$sqrt,$formatNumber), array ($sort— including thefunction($l, $r){...}comparator form —$reverse,$distinct,$append), object ($keys,$values,$lookupover both objects and arrays-of-objects,$existsdistinguishing missing paths from explicitnullper JSONata spec), type ($type,$boolean— falsy for arrays of only-falsy values), date/time ($now()/$now(picture)/$now(picture, timezone)with the XPath-3.1 picture-string subset,$millis), and utility ($uuid,$base64encode,$base64decode).$contains,$split, and$replaceaccept JSONata regex literals (/pattern/flags), with$1/$&substitution refs supported in$replace. The headline ticket example"Condition": "{% $exists($states.input.userId) %}"now routes correctly whether the field is present, explicitlynull, or missing. Implemented natively in Python with no new runtime dependency. Reported by @youngkwangk.
Fixed
- RDS Data API no longer acknowledges writes through the SQL stub for real containers that are still booting — when a Docker-backed RDS instance is configured but its container is still bootstrapping,
ExecuteStatement/BatchExecuteStatementpreviously fell back to the in-memory SQL stub on any connection error and returned a 200 acknowledgingCREATE USER/GRANTstatements that never reached MySQL. The fallback now only applies to control-plane-only clusters (no real container). Container-backed clusters whose endpoint can't be reached surfaceDatabaseUnavailableException(HTTP 504, the canonical AWS error code), so callers see the same transient-error shape they'd see against real RDS. Real SQL errors (lock-wait timeout, etc.) still surface asBadRequestException, not transient-unavailable. Contributed by @jayjanssen. CreateDBInstancereturns immediately withDBInstanceStatus="creating"for Docker-backed instances, matching real AWS — readiness finalisation runs on a daemon thread and transitions the instance toavailableorfailedbased on container liveness. Previously the call blocked inline for up to 60s. Image-side password mismatches (auth-denied during the readiness probe) log at WARNING with a remediation hint.- RDS Aurora MySQL local endpoint and master-user parity — Aurora cluster endpoints now track the reachable backing DB instance endpoint after cluster members are created, so Lambda containers using
DescribeDBClusters.Endpointcan connect to MiniStack-backed databases. MySQL and Aurora MySQL containers also grant the configured master username AWS/RDS-like global privileges after the server is reachable, with version-specific dynamic privileges treated as best-effort. Contributed by @jayjanssen.