What's Changed
New Contributors
- @kharabasz made their first contribution in #2303
- @Xevos117 made their first contribution in #2329
- @jun-ut made their first contribution in #2332
- @toby6578 made their first contribution in #2334
- @vanessah07 made their first contribution in #2337
[1.5.31] — 2026-10-21
Added
- CloudFront — VPC origins and distribution web ACLs —
CreateVpcOrigin,GetVpcOrigin,UpdateVpcOrigin,DeleteVpcOriginandListVpcOriginsare implemented: a change answersDeployingand the next read showsDeployed, the endpoint must be a load balancer or instance that exists in MiniStack, and an origin a distribution names can't be deleted or changed (CannotDeleteEntityWhileInUse,CannotUpdateEntityWhileInUse).AssociateDistributionWebACLandDisassociateDistributionWebACLset and clear the distribution'sWebACLId, withIf-MatchandEntityNotFoundas on AWS. Contributed by @kharabasz and @OS-kiranmalsetty. - Cognito — auth events — on a pool with threat protection on, password, SRP and admin sign-ins, their MFA answers and password changes are logged as
SignInandPasswordChangeevents,AdminListUserAuthEventslists them newest first, andAdminUpdateAuthEventFeedbackandUpdateAuthEventFeedbackare implemented. Contributed by @iot-rocket. - Route 53 — private hosted zones —
CreateHostedZonewith aVPCmade a public zone and dropped the VPC; the zone is now private and keeps its VPCs, andAssociateVPCWithHostedZone,DisassociateVPCFromHostedZoneandListHostedZonesByVPCare implemented with AWS's refusals (PublicZoneVPCAssociation,ConflictingDomainExists,VPCAssociationNotFound,LastVPCAssociation). A Cloud Map private DNS namespace's zone carries the namespace VPC. Contributed by @kharabasz.
Fixed
- S3 — access points — under
AUTH=truea request through an access point alias or ARN is now checked on both the access point and its bucket, withs3:DataAccessPointArn,s3:DataAccessPointAccountands3:AccessPointNetworkOrigin, and the access point's Block Public Access settings apply to requests through it (BlockPublicAclsrefuses a public ACL with 403AccessDenied). Contributed by @iot-rocket. - S3 Control — access point, Object Lambda and Multi-Region Access Point requests authorize the operation they run — the IAM action was read from the path separately from the handler, so an extra segment, a double slash or a resource named
policyran an operation without its action; the action now comes from the route served, a method a resource lacks answers 405MethodNotAllowedand an unparseable path 400InvalidURI. Contributed by @iot-rocket. - S3 — replication rule options —
PutBucketReplicationdroppedSourceSelectionCriteria,EncryptionConfiguration,ReplicationTimeandMetrics; they are now stored, returned and validated with AWS's codes and order (MalformedXML,InvalidArgument,InvalidRequest). Contributed by @kharabasz. - S3 —
EUlocation constraint — eu-west-1 accepts the legacyEUconstraint again and homes the bucket in eu-west-1,GetBucketLocationanswersEUfor it, and other regional endpoints still refuse it. Contributed by @toby6578. - CloudFormation — S3 bucket CORS, Block Public Access and website —
AWS::S3::BucketdroppedCorsConfiguration,PublicAccessBlockConfigurationandWebsiteConfiguration; they are now stored on create, replaced on update and deleted when an update removes them. Contributed by @iot-rocket. - Lambda — Node.js functions — under
USE_SSL=1Node requests to the gateway keep TLS on the gateway port in both executors, socfn-responsecallbacks and SDK calls work, and the generated certificate nameshost.docker.internal. The local executor's SDK stubs now sign with the function's credentials, so a call lands in the function's account and runs as its execution role. Contributed by @iot-rocket. - ELBv2 — listener TLS settings and rule transforms — HTTPS and TLS listeners keep
SslPolicy(defaultELBSecurityPolicy-2016-08) and their certificate, and more than one certificate answersTooManyCertificates(Up to '1' certificate ARNs can be specified, but '2' were specified). Rules keep theirurl-rewriteandhost-header-rewriteTransforms, validated as AWS does, also fromAWS::ElasticLoadBalancingV2::ListenerRule. Contributed by @kharabasz. - Cognito — trigger events and user errors — the pre token generation event carries its version,
TokenGeneration_NewPasswordChallengeandClientCredentials, and every trigger'sawsSdkVersionisaws-sdk-unknown-unknown. Unknown users answerUser does not exist.(Username/client id combination not found.on the client calls withPreventUserExistenceErrorsLEGACY), andChangePasswordchecksPreviousPassword. Contributed by @iot-rocket and @jun-ut. - Step Functions — encryption and
aws-sdk:ec2snapshots — state machines keep and validateencryptionConfiguration(AWS_OWNED_KEYwhen unset, a 300-second key reuse period by default), also inAWS::StepFunctions::StateMachine, andaws-sdk:ec2snapshot results name their lifecycleState. Contributed by @kharabasz and @bandle. - SQS — message digests — a FIFO dedup hit answers the current request's
MD5OfMessageBodyandMD5OfMessageAttributes, andReceiveMessagecomputesMD5OfMessageAttributesover the attributes it returns, so SDKs that verify them no longer fail. Contributed by @vanessah07 and @Xevos117. - EventBridge — archive KMS keys —
CreateArchiveandUpdateArchivekeepKmsKeyIdentifierandDescribeArchivereturns it;ListArchivesentries carry only theArchivesummary fields. Contributed by @kharabasz. - WAF v2 — duplicate names —
CreateIPSetandCreateRuleGrouprefuse a name already used in the scope, and all four creates answerWAFDuplicateItemExceptionwithAWS WAF couldn’t perform the operation because some resource in your request is a duplicate of an existing one.Contributed by @OS-kiranmalsetty. - IoT —
#does not match the level above it — a filter ending in/#no longer receives messages published to the level above it, as on AWS IoT Core. Contributed by @iot-rocket. - SSM — public latest Amazon Linux AMI parameters —
/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64and the Amazon Linux 2 parameter resolve, also as CloudFormationAWS::SSM::Parameter::Value<AWS::EC2::Image::Id>defaults. Contributed by @bandle. - Athena — CSV tables with DuckDB 2.0 — DuckDB 2.0's
type_pushdownoptimizer made the CSV reader'sTRY_CASTstrict, failing queries on values of another type; it is disabled on the Athena connection.