August 3, 2026 · v1.4.10
v1.4.10 adds CloudFront cache, origin request, and response headers policies, extends account+region isolation to Cognito and CloudFormation, and grows DynamoDB PartiQL with RETURNING and REMOVE. It also lands API Gateway, EC2, IoT, ACM, and a CloudWatch CBOR fix that unblocks the Terraform AWS provider.
GetConfig and ListDistributionsBy…Id for CachePolicy, OriginRequestPolicy, and ResponseHeadersPolicy, so Terraform's aws_cloudfront_cache_policy, aws_cloudfront_origin_request_policy, and aws_cloudfront_response_headers_policy create, read, update, and delete end-to-end. Each config round-trips in full (TTLs and cache-key parameters, header/cookie/query-string behaviors, CORS, security headers, server-timing, custom and remove headers), with ETag on every read, If-Match enforced on update/delete, and the …AlreadyExists / NoSuch… / …InUse error codes matching AWS. Reported by @wparad.ListIdentityProviderConfigs. GET /clusters/{name}/identity-provider-configs was unimplemented and returned No route. It now returns the AWS-shaped identityProviderConfigs list ({name, type}) and a ResourceNotFoundException for an unknown cluster. Contributed by @b-rajesh.RETURNING, REMOVE, and richer WHERE predicates. ExecuteStatement now supports RETURNING ALL OLD * / ALL NEW * / MODIFIED OLD * / MODIFIED NEW * on UPDATE and RETURNING ALL OLD * on DELETE, the REMOVE clause, and begins_with / IN / IS MISSING / IS NOT MISSING predicates. An UPDATE whose WHERE matches no item now returns ConditionalCheckFailedException rather than a silent no-op, matching AWS.Fn::ImportValue lookups. They now scope by account and region; asynchronous stack work retains the owning region and nested stacks stay co-located with their parent. Contributed by @Areson.DescribeAlarms over CBOR broke the Terraform AWS provider ≥ 6.50. Alarm StateUpdatedTimestamp / AlarmConfigurationUpdatedTimestamp were serialized as bare unsigned integers in the smithy-rpc-v2-cbor response, so the provider's typed decoder failed the read-back with unexpected value type cbor.Uint and aws_cloudwatch_metric_alarm could not be created. Timestamp members are now encoded as CBOR tag 1 (epoch date-time), which the decoder expects. Reported by @sdreger.POST /items) could lose to a greedy ANY /{proxy+} catch-all depending on which was created first. Matching routes are now ranked so the most specific one wins, as real API Gateway always dispatches to the most specific match. Contributed by @Lukasdoe.DescribeAvailabilityZones now returns real AZ IDs. Every zone reported its ZoneId as a copy of its ZoneName (e.g. us-east-1a under both), but AWS deliberately differs: names are shuffled per account while IDs are region-coded and stable. ZoneId is now the region-coded form (use1-az1, euc1-az1, apse2-az1, …), matching AWS's coding across every region. Contributed by @bandle._acme-challenge.*.example.com, so Terraform's aws_acm_certificate_validation never found the record its aws_route53_record had created. Real ACM strips the leading *., so *.example.com and example.com share one _acme-challenge.example.com CNAME; RequestCertificate now emits that collapsed record and the validation resolves. Reported by @wparad.errors="replace", so a non-UTF-8 payload reached the action with every non-ASCII byte replaced by U+FFFD. encode(<expr>, 'base64') is now supported and encodes the payload as published, so a rule can deliver the exact bytes; no lossy decode remains on the publish → rule → invoke path. Contributed by @maximoosemine.SELECT clause and delivered the whole message. It now parses and projects *, attribute paths, AS aliases, topic() / topic(n), timestamp(), and literals, for both Basic Ingest and topic-filter delivery. Contributed by @maximoosemine.ProjectionExpression list-index results no longer carry null placeholders. Projecting a list element (e.g. #i[2]) returned the element behind sparse null entries instead of the single projected element. Projected list results are now compacted to only the referenced elements.docker pull ministackorg/ministack:1.4.10 docker run -d -p 4566:4566 ministackorg/ministack:1.4.10
Or pin in compose.yaml:
services:
ministack:
image: ministackorg/ministack:1.4.10
ports:
- "4566:4566"
Issues and PRs welcome on GitHub. Discussion on r/ministack.