What's Changed
New Contributors
- @KABBOUCHI made their first contribution in #756
[1.3.58] — 2026-06-04
Added
- EKS — default
topology.kubernetes.io/zoneandtopology.kubernetes.io/regionlabels on k3s nodes — every cluster's k3s container now receives--node-label topology.kubernetes.io/zone={region}aand--node-label topology.kubernetes.io/region={region}, matching the labels real EKS nodes carry via the AWS cloud-controller-manager. Unblocks topology-aware controllers (Karpenter, Cluster Autoscaler, schedulertopologySpreadConstraints) without manualkubectl label nodeworkarounds. Region resolves throughget_region(). Per-node-group label overrides belong onCreateNodegroup.labels— the AWS-shape-correct surface. Contributed by @b-rajesh. - KMS — Ed25519 (
ECC_NIST_EDWARDS25519) sign/verify —CreateKeyacceptsECC_NIST_EDWARDS25519, returnsSigningAlgorithms=["ED25519_SHA_512","ED25519_PH_SHA_512"](both algorithms per the AWS Developer Guide "Supported signing algorithms for ECC key specs" table).Sign/VerifyforED25519_SHA_512enforcesMessageType=RAWper the AWS Sign API contract ("ED25519_SHA_512 signing algorithm requires MessageType:RAW… cannot be used interchangeably");ED25519_PH_SHA_512(Ed25519ph / HashEdDSA, RFC 8032 §5.1) returnsUnsupportedOperationExceptionrather than route through pure Ed25519 — those signatures would be incompatible with real AWS KMS. Contributed by @KABBOUCHI. - ELBv2 —
SetSubnets,SetIpAddressType,SetSecurityGroups— three load-balancer mutation actions now implemented per botocore output shapes:SetSubnetsreturnsAvailabilityZones+IpAddressType,SetIpAddressTypereturnsIpAddressType,SetSecurityGroupsreturnsSecurityGroupIds(note: notSecurityGroups). - Glue —
CreateUserDefinedFunction/UpdateUserDefinedFunction/DeleteUserDefinedFunction/GetUserDefinedFunction/GetUserDefinedFunctions— full UDF lifecycle atAWSGlue.<verb>. Records carryFunctionName,DatabaseName,ClassName,OwnerName,OwnerType,CreateTime,ResourceUris,CatalogIdper the AWSUserDefinedFunctionoutput shape.GetUserDefinedFunctionshonors the AWS-requiredPatternglob. - IAM — seeded AWS-managed policies for EKS —
AmazonEKSClusterPolicy,AmazonEKSWorkerNodePolicy,AmazonEKS_CNI_Policy,AmazonEKSServicePolicynow resolve to the real AWS policy documents (verbatim from the AWS Managed Policy Reference), not the wildcardAllow *fallback.GetPolicyVersionreturns the real action lists so policy simulators / Terraform diffs match real AWS.
Fixed
- EC2 —
Attachment.AttachTimeon ENI describe —AttachNetworkInterfacenow records the attach timestamp on the ENI's Attachment record;DescribeNetworkInterfacessurfaces it as<attachTime>in the wire XML, matching the AWSNetworkInterfaceAttachmentshape. Required by tools that audit attachment age (Cloud Custodian, Config rules). - Glue —
CreateDatabasehonors top-levelTags—CreateDatabasepreviously droppedTagson the floor; tags are now stored against the database ARN (arn:aws:glue:{region}:{account}:database/{name}) and retrievable viaGetTags.DeleteDatabasecleans them up. - Glue —
UpdateTableoptimistic concurrency viaVersionId— table records now carry a monotonically-increasingVersionId(string, per the AWSTableoutput shape).UpdateTablewith a staleVersionIdreturnsConcurrentModificationException; matching version bumps and applies. Calls withoutVersionIdkeep the old last-write-wins behaviour for back-compat. - ECS —
DeleteServicemarks INACTIVE instead of removing the record — matches the AWS contract: "Services in theDRAININGorINACTIVEstatus can still be viewed with theDescribeServicesAPI operation." Tasks are stopped synchronously, the service stays describable withstatus=INACTIVE, and tags remain attached. Re-creating a service with the same name is allowed once the prior incarnation isINACTIVE(matches the AWS-documented conflict-only-on-ACTIVE/DRAINING rule). - Lambda — layer
CodeSizeand post-attachment invocation —CreateFunction(Layers=[...])andUpdateFunctionConfiguration(Layers=[...])now surface each layer's realCodeSizeonGetFunctionConfiguration.Layers[*].CodeSize(looked up from the published layer version) instead of a hardcoded0.UpdateFunctionConfigurationalso recycles the$LATESTwarm worker when worker-affecting fields change (Layers,Runtime,Handler,Environment,MemorySize,Architectures,VpcConfig,FileSystemConfigs) — without this, a layer attached after the first invoke was never extracted into/opt/layer_Nfor the running worker, andimportfrom the layer failed at handler entry. Reported by @omargr299. - Cognito —
CUSTOM_AUTHtrigger Lambdas no longer deadlock the event loop —_dispatch_idpand_dispatch_identityare nowasyncand run their sync handlers viaasyncio.to_thread. Previously, a Cognito op that invoked a trigger Lambda (Define / Create / Verify auth challenge, pre-token, etc.) blocked the ASGI event loop while waiting for the Lambda HTTP callback that the same loop needed to serve — every CUSTOM_AUTH flow hung at the first trigger. Reported by @aahoughton.