September 4, 2026 · v1.5.7
v1.5.7 makes EC2 AMIs shareable across accounts with real launch permissions, teaches CloudFormation to update twelve resource types in place instead of destroying and re-creating them, and gives API Gateway IAM-authorized methods a real caller identity — including the Cognito identity-pool fields an Amplify app relies on. Cognito TOTP codes now actually verify, and the Aurora reader endpoint is a name that resolves.
ModifyImageAttribute applies launchPermission add/remove in both wire forms, DescribeImages shows another account's image when the caller holds a permission (owner's OwnerId kept, Public flips on Group=all, ExecutableUsers honoured), and a shared AMI launches. A non-owner modifying an image answers AuthFailure, as real EC2 does. Reported by @edersonbrilhante.identity fields — accessKey, accountId, userArn, and for identity-pool credentials the four cognito* fields with the documented CognitoSignIn:<sub> provider format. HTTP API routes fill requestContext.authorizer.iam and reject unsigned requests with 403 Forbidden. GetCredentialsForIdentity registers its credentials as an STS session, so identity-pool credentials work under AUTH=true. Reported by @iot-rocket.SetPrincipalTagAttributeMap, GetPrincipalTagAttributeMap and the AWS::Cognito::IdentityPoolPrincipalTag CloudFormation resource, with AWS's not-configured error and per-provider maps. Contributed by @ppettitau.UPDATE_COMPLETE.VerifySoftwareToken accepted any six digits and the SOFTWARE_TOKEN_MFA challenge issued tokens for any code. The secret is now stored and verified with RFC 6238 — wrong codes answer EnableSoftwareTokenMFAException and CodeMismatchException — and the PreSignUp trigger fires on plain SignUp, fail-closed, with autoConfirmUser honoured. Reported by @iot-rocket.012345678912 into context.invoked_function_arn, so a handler that self-registers its own ARN wired triggers to a scope where nothing exists. Python and Node.js functions now see the control-plane ARN; for runtimes MiniStack can't shim, the RIE's sentinel scope resolves as the caller's own function. Reported by @TomaszKupka.cluster-ro- name handed out at create was never registered, so a stack that stored it hung until client timeout. It is now a Docker network alias alongside the writer name and reported by DescribeDBClusters in alias mode — per the Aurora docs, a cluster with no replicas resolves its reader endpoint to the primary. Reported by @jbschooley.GetMetricStatistics), CloudFront's GetDistribution config lost its invented ns0: prefixes, cross-account AssumeRole resolves the role in the ARN's account and assumed sessions run in the right tenant, a stack addressed by its ID deletes and updates (cdk destroy works), and a CodeBuild build the agent never ran lands FAULT instead of SUCCEEDED — with CODEBUILD_DOCKER_FLAGS for the SELinux --security-opt case. All five contributed by @mm-salesqueze.403 ExpiredToken) and evict instead of growing forever, empty pagination tokens are omitted across MSK, Organizations, WAF Classic, Bedrock and the newer Lambda surfaces, and the seeded public AMIs carry their real publishing accounts so Owners=["amazon"] selects them.docker pull ministackorg/ministack:1.5.7 docker run -d -p 4566:4566 ministackorg/ministack:1.5.7
Or pin in compose.yaml:
services:
ministack:
image: ministackorg/ministack:1.5.7
ports:
- "4566:4566"
Issues and PRs welcome on GitHub. Discussion on r/ministack.