What's Changed
[1.3.25] — 2026-05-03
Added
- AppSync Events API — Event API management under
/v2/apis, channel namespaces, API keys via/v1/apis/{apiId}/apikeys, HTTP publish on{apiId}.appsync-api.*, and realtime WebSocket on{apiId}.appsync-realtime-api.*(aws-appsync-event-wssubprotocol). Strict auth viaAPPSYNC_EVENTS_ENFORCE_AUTH=1. Contributed by @marcin-nowak-scl. - CloudFront KeyValueStore — management plane — Create/Describe/List/Update/Delete with ETag concurrency;
KeyValueStoreAssociationsround-tripped through CloudFront Functions. Contributed by @DaviReisVieira. - CloudFront KeyValueStore — data plane — separate
cloudfront-keyvaluestoreservice covering Describe, ListKeys, GetKey, PutKey, DeleteKey, UpdateKeys with ETag concurrency. Requested by @shellscape. Contributed by @DaviReisVieira. - EventBridge
cron()schedule auto-fire — full AWS-spec parity. Zero-dep parser for the 6-field syntax:*,?, ranges, steps, lists, named month/weekday tokens, and theL(last day /<n>Llast weekday-of-month),LW(last weekday),<n>W(nearest weekday), and<n>#<k>(kth weekday-of-month) operators. DoM/DoW mutual-exclusion enforced atPutRule. Contributed by @hiddengearz.
Fixed
- AppSync Events
ChannelNamespaceresponse now includeschannelNamespaceArn— spec member was omitted; Terraform / Java SDK v2 sawnullwhere AWS returns the ARN. - CloudFront KVS data-plane
DescribeKeyValueStoreCreated/LastModified— were hardcoded to0; now parsed from the management-plane timestamp into int epoch seconds. - S3 vhost routing excludes
cloudfront-kvs.*— moved the bypass from a/key-value-stores/path check up to the_NON_S3_VHOST_NAMEShost-name layer. - EventBridge
DescribeRule/ListRulesnow emitCreatedByandManagedBy— spec members were silently dropped from_rule_out. - EventBridge
PutEventsrejects more than 10 entries — AWS spec capsEntriesat 10; ministack accepted any size. - EventBridge event
Timeis int epoch seconds, not float — Java/Go SDK v2 timestamp parsers reject high-precision floats; archive replays now also dispatch the int form. - EventBridge content-filter
[{"exists": false}]matches absent keys — short-circuited to no-match before theexistsbranch was evaluated, so patterns that should fire on missing fields silently dropped. - EventBridge
ListRulespaginates — addedLimit(1-100) and opaqueNextToken; previously returned the full list and SDK paginators looped on the first page. - EventBridge
ListRuleNamesByTargetNextTokenis opaque — was a raw integer offset string. - EventBridge
DescribeEventBus/ListEventBusesomitPolicywhen no policy set — was emitting"", divergent from AWS shape. - EventBridge
DescribeEventSourceState — was hardcodedENABLED; AWS enum isPENDING/ACTIVE/DELETED. Now returnsACTIVE.