What's Changed
New Contributors
- @roshie548 made their first contribution in #1282
- @ovsteenb made their first contribution in #1287
[1.4.12] — 2026-08-06
Added
- CloudWatch Logs —
GetLogRecord, Insights@ptrrows, andStartLiveTail—StartQuery/GetQueryResultspreviously stubbed empty results, so there was no way to obtain an Insights@ptror round-tripGetLogRecord.PutLogEventsnow assigns an opaque pointer per event; Insights queries return matching rows in the AWS field/value shape (@ptr,@timestamp,@message,@logStream,@log); andGetLogRecordresolves those pointers to the full transformed field map (unmaskaccepted, masking not implemented). Insights evaluates a CWLI subset:fields, chained| filter(@field = '…',@field like /regex/[i]with AND semantics),| sort @timestamp asc|desc, and| limitapplied after filter+sort asmin(query limit, StartQuery limit).StartLiveTailholds a wire-validapplication/vnd.amazon.eventstreamopen until client disconnect (initial-response, thensessionStart, thensessionUpdateframes fed by matching concurrentPutLogEvents); idle heartbeats are once per second and at most 10 updates are buffered (oldest dropped,sampledset).FilterLogEventsnow returns theeventIdreal AWS assigns, whileGetLogEventskeeps its{timestamp, message, ingestionTime}shape.DescribeLogGroupsreturns botharn(with trailing:*) andlogGroupArn(StartLiveTail-safe, no star). Full CWLI (stats,parse,or, …) remains out of scope. Contributed by @ovsteenb. - Lambda —
PutFunctionRecursionConfig/GetFunctionRecursionConfig— the recursion-config sub-resource used by Terraform'saws_lambda_function_recursion_configwas unrouted, soGET/PUT /2024-08-31/functions/{name}/recursion-configfell through to aResourceNotFoundException. Both operations are now served:RecursiveLoopdefaults toTerminate, acceptsAllow/Terminate, round-trips per function, and returnsResourceNotFoundExceptionfor an unknown function. Reported by @mayankgupta57. - API Gateway v2 — state is now account- and region-scoped — HTTP and WebSocket APIs, routes, integrations, stages, deployments, authorizers, responses, and tags were account-scoped, so control-plane resources and execute-api resolution bled across regions. They now scope by account and region, with execute-api dispatch pinning each request to its owning API's region. Contributed by @Areson.
Fixed
- S3 — lifecycle
Andfilters no longer hang the Terraform waiter — aaws_s3_bucket_lifecycle_configurationrule using anAndfilter (prefix + tags) never converged, timing out the provider's 3-minute waiter. The AWS provider expands theAndoperator withObjectSizeGreaterThan = 0(and, for a prefixlessAnd,Prefix = ""), whichGetBucketLifecycleConfigurationomitted, so the provider'sreflect.DeepEqualequality check never matched. TheAndoperator now echoesObjectSizeGreaterThan(0 when unset) and an emptyPrefixwhen unset, and explicit object-size filters round-trip at both the filter andAndlevel. Reported by @rogercost. - DynamoDB —
Scan/QuerywithProjectionExpressionand noSelect— a scan or query supplying onlyProjectionExpressionwas rejected withSelect value ALL_ATTRIBUTES is not compatible with ProjectionExpression. Per the AWS API aProjectionExpressionwithoutSelectis equivalent toSPECIFIC_ATTRIBUTES; the effective default is nowSPECIFIC_ATTRIBUTESwhenever a projection is present, while an explicit incompatibleSelect(ALL_ATTRIBUTES,COUNT, …) with aProjectionExpressionis still rejected. Reported by @jin-gizmo. - DynamoDB Streams — long-lived containers no longer accumulate stream backlog — shard records grew without bound and event-source-mapping poll state was never released, so memory and read latency degraded over a container's lifetime. Stream records now expire after 24 hours and per-mapping poll state is released, with reads resuming from the trim horizon after expiry. Contributed by @maximoosemine.
- RDS — DB subnet group and security-group fidelity — subnet groups did not resolve their VPC or availability zones and
VpcSecurityGroupIdswere dropped on cluster writes. Subnet groups now resolveVpcIdand AZs from the referenced EC2 subnets and returnInvalidSubnetfor an unknown subnet, andVpcSecurityGroupIdsonCreateDBCluster/ModifyDBClusterare preserved rather than mangled by the Query serializer. Contributed by @Areson. - EC2 —
DescribeVolumesnow evaluatesFilters— the operation ignoredFiltersand returned every volume; it now matches onvolume-id,size,status,volume-type,availability-zone,snapshot-id,create-time,encrypted,multi-attach-enabled,attachment.*, andtag:/tag-key. Contributed by @bandle. - EC2 —
DescribeSubnetsnow evaluates thecidr-blockfilter — thecidr-block/cidr/cidrBlockaliases were ignored; they now match a subnet'sCidrBlockexactly. Contributed by @bandle. - EC2 —
DescribeInternetGatewaysnow evaluatesFilters— the operation parsed onlyInternetGatewayIdand ignoredFilters, returning every gateway in the account; filters are now applied. Contributed by @bandle. - Step Functions — Map
Parametersapplied per item only — a Map state appliedParametersto the state input and then reused it as the per-item selector.Parametersis the legacy spelling ofItemSelector, so it is now applied only per item. Contributed by @bandle. - Step Functions — EC2
aws-sdkparameter names no longer over-expanded — acronym expansion (needed for RDS, e.g.DbClusterIdentifier→DBClusterIdentifier) was wrongly applied to EC2, mangling already-correct names such asVpcIdandEnableDnsHostnames. EC2aws-sdkparameter names now pass through unchanged. Contributed by @bandle. - Lambda — SDK client stub lookup normalized — JSON-RPC SDK client stubs are now keyed by exact full module specifier (including the
eventsandlogsaliases), preserving bundled-module precedence and the actionable local-executor error for a missing stub. Contributed by @roshie548. - Lambda — durable execution restore scoping — the durable-execution restore path rebuilt timers and callback indexes only for the ambient account, so executions in non-default accounts could stall and non-boot-region executions could re-arm under the wrong region after a restart. Restore now rebuilds across every persisted account scope and derives each execution's account and region from its
DurableExecutionArn. Contributed by @Areson.