DocsAWS 101Blog
← Back to Blog

v1.3.26 — S3 Files spec parity, OpenSearch VPC endpoint shape, CloudFormation CloudFront KeyValueStore

May 4, 2026 · v1.3.26

1.3.26 is a parity-and-fix release. Three changes, all spec-anchored against botocore's service-2.json for the affected services.

1. S3 Files — full s3files-2025-05-05 route and shape parity

Reported in the wild: aws s3files create-file-system failed against MiniStack with InvalidRequest: Unknown S3 Files route: PUT /file-systems. The CLI was right — AWS uses PUT, MiniStack was handling POST. That single bug exposed a deeper truth: the entire s3files module had been written against guessed shapes, not the published spec. So I rebuilt it end-to-end.

Verified against botocore/data/s3files/2025-05-05/service-2.json (now bundled in botocore 1.42.85+). All 21 operations, all input/output member names, all routes, all error shapes:

The reporter's exact CLI now works:

$ aws --endpoint-url=http://localhost:4566 s3files create-file-system \
    --bucket "arn:aws:s3:::seed-bucket" \
    --role-arn "arn:aws:iam::000000000000:role/s3files-role" \
    --query 'FileSystemId' --output text
fs-71848f5c630d4f20bb4d

2. OpenSearch — non-VPC domains stop emitting empty VPCOptions

Bug: CreateDomain / DescribeDomain were returning VPCOptions: {} alongside the public Endpoint. The Terraform AWS provider treats any non-null VPCOptions object as proof the domain is VPC-backed and then fails the read with:

OpenSearch Domain in VPC expected to have null Endpoint value

1.3.26 brings the response shape in line with the AWS spec:

Contributed by @marcin-nowak-scl.

3. CloudFormation — AWS::CloudFront::KeyValueStore provisioning

1.3.25 shipped the native CloudFront KeyValueStore management + data plane. 1.3.26 makes it provisionable from CloudFormation, CDK, and Terraform (via the CFN provider).

To enable in-place updates for KeyValueStore (and future resources that need them), the CloudFormation engine now routes previously-provisioned resources through a per-type update handler when one is registered. Resources that don't define an update handler fall back to the existing idempotent create path — no change for the rest of the catalogue.

Resources:
  EdgeRoutes:
    Type: AWS::CloudFront::KeyValueStore
    Properties:
      Name: routing-config
      Comment: edge routing table

Upgrade

docker pull ministackorg/ministack:1.3.26
docker run -d -p 4566:4566 ministackorg/ministack:1.3.26

Or pin in compose.yaml:

services:
  ministack:
    image: ministackorg/ministack:1.3.26
    ports:
      - "4566:4566"

Ship together

Shipped by the MiniStack community. Contributions credited throughout. GitHub · r/ministack