What's Changed
Full Changelog: v1.4.10...v1.4.11
[1.4.11] — 2026-08-04
Added
- Lambda — Function URL data plane —
CreateFunctionUrlConfigreturned a{urlId}.lambda-url.{region}.on.awsURL that nothing served: a request addressed to it matched no route, fell through to S3 virtual-host addressing, and came back asNoSuchBucket. Function URLs are now invocable. A request reaching the gateway on a{urlId}.lambda-url.{region}.*host — or on the path-based/_aws/lambda-url/{urlId}/...form, for clients that can't setHostand browsers that won't resolve*.localhost— resolves the URL id to its function and invokes it with a payload-format-2.0 event carrying$defaultforrouteKeyandstage,rawPath/rawQueryStringpercent-encoded as AWS sends them, andbody/queryStringParametersomitted rather than null.AuthTypeis enforced (AWS_IAMreturns403 Forbiddento an unsigned request, header-signed and presigned both pass;NONEis open), theCorsconfig drives preflight and response headers with a non-allowed origin getting none, andInvokeMode: RESPONSE_STREAMresponses are unwrapped from theHttpResponseStreamframing so the prelude supplies the status and headers instead of leaking into the body. Cookies returned via the format-2.0cookiesarray becomeSet-Cookieheaders. Contributed by @liammizrahi. - API Gateway v1 — state is now account- and region-scoped — REST APIs, resources, methods, integrations, deployments, stages, models, API keys, and usage plans were stored globally and leaked across account and region boundaries. They now scope by account and region; execute-api dispatch resolves a REST API's owning region by id (the mock execute-api host carries no region segment) and runs the invocation in that scope, and a caller-supplied
ms-custom-idstays unique across the account's regions. Persisted state carries the on-disk format v3 an older binary refuses rather than misreads; legacy snapshots restore into each API's region and v1 tags remain account-scoped. Contributed by @Areson. - CloudWatch Logs — Insights queries are now account- and region-scoped — Logs Insights query ids were account-scoped, so a
StartQueryin one region could be read or stopped from another, contrary to the regional Logs Insights API. They now scope by account and region; persisted state carries the on-disk format v3 an older binary refuses, and legacy queries restore into their referenced log group's region. Contributed by @Areson.
Fixed
- Step Functions —
aws-sdk:ec2tasks now return the SDK output shape — the EC2 Query-XML adapter passed a near-wire structure through without reshaping or typing, sodescribeVolumesreturnedVolumeSet.Item.Statuswhere AWS returnsVolumes[0].State, scalars were strings, empty collections were""instead of[], and arequestIdthe SDK never returns was included — an ASLChoicewritten against AWS silently took the wrong branch locally. The normalizer now follows the SDK output shape: PascalCase member names,*Setwrappers pluralized and unwrapped, and list/int/bool leaves coerced, with overrides for names that cannot be inferred (e.g.keySet->KeyPairs). Contributed by @bandle. - CloudWatch —
DescribeAlarmsand metric reads over CBOR still broke the Terraform AWS provider ≥ 6.50 — after 1.4.10 fixed the alarm timestamp encoding, absent optional fields (ExtendedStatistic,Unit) were still serialized as CBOR Nil, which the provider's typed smithy-rpc-v2-cbor decoder rejected withunexpected value type *cbor.Nil; separately,GetMetricStatisticsandGetMetricDatareturned theirTimestamp/Timestampsmembers as strings rather than CBOR tag 1. Absent optional fields are now omitted from every CloudWatch CBOR response (real AWS never sends null), and metric-data timestamps are tag-1 encoded. Reported by @sdreger.