What's Changed
[1.4.6] — 2026-07-24
Added
- EC2 —
AWS::EC2::VPCEndpointCloudFormation support — VPC endpoints now provision through CloudFormation into the shared EC2 state, soDescribeVpcEndpointsreturns them;Refreturns thevpce-id andFn::GetAttexposesId. Endpoint type, VPC/route/subnet/security-group associations, tags, and in-place updates are supported. Contributed by @robert-pitt-foodhub. - API Gateway v1 —
AWS::ApiGateway::DocumentationVersionCloudFormation support — documentation versions now create, update, and replace through CloudFormation;Refreturns the{RestApiId}/{DocumentationVersion}identity, and a version change triggers replacement. Contributed by @robert-pitt-foodhub. - API Gateway v1 —
AWS::ApiGateway::RequestValidatorCloudFormation support — request validators now provision through CloudFormation; bothRefandFn::GetAtt RequestValidatorIdreturn the validator id. ANameorRestApiIdchange triggers replacement while the validation flags update in place. Contributed by @robert-pitt-foodhub. - AppSync —
AWS::AppSync::FunctionConfigurationCloudFormation support — pipeline functions now provision through CloudFormation;Refreturns the function ARN andFn::GetAttexposesFunctionArn,FunctionId,Name, andDataSourceName. AnApiIdchange triggers replacement. Contributed by @robert-pitt-foodhub. - Lambda —
AWS::Lambda::UrlCloudFormation support — function URLs now provision through CloudFormation and share the Function URL API state;Fn::GetAttexposesFunctionArnandFunctionUrl,AuthType/InvokeMode/Corsupdate in place, and aTargetFunctionArnorQualifierchange triggers replacement.UpdateFunctionUrlConfignow also appliesInvokeMode. Contributed by @robert-pitt-foodhub. - CloudWatch Logs —
AWS::Logs::ResourcePolicyCloudFormation support — resource policies now provision through CloudFormation;Refreturns thePolicyName, a policy-document change updates in place, and aPolicyNamechange triggers replacement. Contributed by @robert-pitt-foodhub. - CloudFront —
AWS::CloudFront::CloudFrontOriginAccessIdentityCloudFormation support — origin access identities now provision through CloudFormation;Refreturns the identity id (E…) andFn::GetAttexposesIdandS3CanonicalUserId, both retained across comment updates. Contributed by @robert-pitt-foodhub. - API Gateway v1 —
GetExport— a REST API stage can now be exported as OpenAPI 3 (oas30) or Swagger 2 (swagger), in JSON or YAML, with the optionalintegrationsextension included on request. Contributed by @robert-pitt-foodhub. - RDS — Aurora MySQL global replication — Aurora MySQL 8 global clusters now replicate from the global writer to secondary-region readers over GTID-based binary log replication, with binlog retention bounded on the source and fail-closed handling for volumes initialized by an older version. Contributed by @Areson.
- Region scoping — Athena, Auto Scaling, Cloud Map, EFS, EMR, Inspector2, Amazon MQ, AppSync, and S3 Files — state is now isolated by account and region, so same-named resources in different regions no longer collide. Persisted state carries a versioned regional schema (on-disk format v3) that an older binary refuses rather than misreads, and legacy state migrates by recovering each record's region from its stored ARNs. Contributed by @Areson.
Fixed
- API Gateway v2 —
queryStringParameters/bodysent asnullinstead of omitted — the HTTP API v2 Lambda proxy event includedqueryStringParameters/bodywith anullvalue when a request had no query string or no payload, rather than omitting the key entirely as real AWS does. Strict event-shape validators (e.g. AWS Lambda Powertools'isAPIGatewayProxyEventV2) acceptundefinedor a proper value but rejectnull, so every bodyless or querystring-less request against such a validator failed with an unhandledInvalidEventError, even though the invocation itself succeeded and the Lambda's own business logic never ran. Contributed by @ryan-bennett. - Cognito — Hosted UI bound the authorization code to the raw email alias instead of the resolved Username — in pools with
UsernameAttributesorAliasAttributes, the email entered on the Hosted UI login page was bound to the authorization code verbatim, so the code exchange keyed off the alias rather than the user's real Username. The login and new-password submit paths now bind the code to the Username resolved by the alias lookup. Contributed by @kjdev. - CloudFormation/Lambda — Docker-executed custom resources hung because the
ResponseURLusedlocalhost— withLAMBDA_EXECUTOR=docker, a Lambda-backed custom resource completed its work but could not post its completion callback: theResponseURLpointed atlocalhost, which inside the Lambda container resolves to the container itself rather than the host running MiniStack, so the PUT failed with connection refused and the stack sat inCREATE_IN_PROGRESSuntil the one-hour service timeout. TheResponseURLhanded to a container-executed custom resource now rewriteslocalhost/127.0.0.1tohost.docker.internal, the same host already used forAWS_ENDPOINT_URL; explicitly configured hostnames are left untouched. Reported by @robert-pitt-foodhub.