github ministackorg/ministack v1.3.23

5 hours ago

What's Changed

[1.3.23] — 2026-05-01

Added

  • Amazon OpenSearch Service — management plane on /2021-01-01/*: CreateDomain, DescribeDomain(s), DeleteDomain, ListDomainNames (with EngineType filter), UpdateDomainConfig, DescribeDomainConfig (Options/Status wrapping), DescribeDomainChangeProgress, ListVersions, GetCompatibleVersions, AddTags/ListTags/RemoveTags. Account-scoped state. Default data plane is a stub endpoint; set OPENSEARCH_DATAPLANE=1 to spawn one real opensearchproject/opensearch container per CreateDomain (same pattern as ElastiCache/RDS). Add OPENSEARCH_DASHBOARDS=1 for an optional per-domain opensearch-dashboards sidecar — DescribeDomain.DashboardEndpoint is populated. DeleteDomain tears down spawned containers. Terraform aws_opensearch_domain compatible. Requested by @marcin-nowak-scl.
  • EventBridge scheduled rule auto-firerate(N minute|hour|day) rules now fire automatically. A daemon thread (eb-scheduler) ticks every 10 s; the per-rule countdown anchors to CreationTime so the first fire lands one full interval after PutRule. Scheduled event payload matches AWS exactly (source: aws.events, detail-type: Scheduled Event, detail: {}, ISO 8601 time). Multi-tenant — iterates the rules store directly. cron() expressions are stored but not yet auto-fired (one-time INFO log surfaces the gap). Contributed by @hiddengearz.
  • AWS Organizations — DescribeOrganization, ListRoots, ListAccounts, DescribeAccount, ListOrganizationalUnitsForParent / ListAccountsForParent, CreateOrganizationalUnit / DescribeOrganizationalUnit / DeleteOrganizationalUnit. Single-master-account org auto-initialised on first call; nested OUs carry the new Path field (2026-03 AWS additive change).
  • AWS Account service — GetAccountInformation, GetContactInformation, ListRegions, GetRegionOptStatus. Returns the new AccountState: ACTIVE field (2026-04 AWS additive change). Older boto3 SDKs strip the field; newer ones see it.
  • AWS Batch — control-plane stub: ComputeEnvironments, JobQueues, JobDefinitions (auto-revisioning), SubmitJob (auto-SUCCEEDED), DescribeJobs, ListJobs. Account-scoped.
  • WAF Classic + Regional (v1) — minimal stub so legacy clients (Terraform, old CFN) get clean empty-state responses instead of 405. List* returns empty arrays, GetChangeToken/GetChangeTokenStatus return valid responses, Get* for unknown resources returns WAFNonexistentItemException. For full WebACL state use wafv2.
  • EC2 DescribeRegions — returns 31 commercial regions with correct OptInStatus (opt-in-not-required for legacy us-/eu-/ap-* regions, opted-in for newer ones). Supports RegionNames filter and AllRegions toggle.
  • Lambda FileSystemConfigs accepts S3 ARNs — the 2026-04 AWS S3-mount addition. Server stores and round-trips whatever ARN format the SDK sends (EFS access points, S3 buckets, future shapes).
  • EventBridge LogConfig — additive 2026-03 field on CreateEventBus / UpdateEventBus; persisted, returned on DescribeEventBus.
  • API Gateway v1 securityPolicy accepts the new TLS-1.3 enum — allow-lists SecurityPolicy-TLS13-1-2-FIPS-PFS-PQ-2025-09 (2026-03 addition) and any future opaque values; default remains TLS_1_2.

Fixed

  • S3 PostObject accepts unquoted Content-Disposition field names — .NET's MultipartFormDataContent emits name=foo for ASCII-clean values per RFC 2183; the parser previously only matched the quoted form name="foo" and dropped key/success_action_status, causing browser-form uploads from .NET clients to 400. Reported by @mattburton.
  • EventBridge target dispatch time field is ISO 8601 — was a Unix epoch float, AWS specifies a string like 2026-05-01T18:08:16Z. Both PutEvents-driven and scheduled-rule-driven dispatches now use the canonical format.

Performance

  • Idle RAM% — Dockerfile now sets PYTHONOPTIMIZE=2 and MALLOC_ARENA_MAX=2. Verified zero correctness impact (no assert or __doc__ introspection in ministack source); throughput unchanged.

Don't miss a new ministack release

NewReleases is sending notifications on new releases.