{"record":{"id":"91f660387be69292","repo":"kubernetes/kops","slug":"create-route-request-failed-v","errorCode":null,"errorMessage":"create Route request failed: %v","messagePattern":"create Route request failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/route.go","lineNumber":235,"sourceCode":"\t\t\trequest.InstanceId = checkNotNil(e.Instance.ID)\n\t\t}\n\n\t\tklog.V(2).Infof(\"Creating Route with RouteTable:%q CIDR:%q IPv6CIDR:%q\",\n\t\t\taws.ToString(e.RouteTable.ID), aws.ToString(e.CIDR), aws.ToString(e.IPv6CIDR))\n\n\t\tresponse, err := t.Cloud.EC2().CreateRoute(ctx, request)\n\t\tif err != nil {\n\t\t\tcode := awsup.AWSErrorCode(err)\n\t\t\tmessage := awsup.AWSErrorMessage(err)\n\t\t\tif code == \"InvalidNatGatewayID.NotFound\" {\n\t\t\t\tklog.V(4).Infof(\"error creating Route: %s\", message)\n\t\t\t\treturn fi.NewTryAgainLaterError(\"waiting for the NAT Gateway to be created\")\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"error creating Route: %s\", message)\n\t\t}\n\n\t\tif !aws.ToBool(response.Return) {\n\t\t\treturn fmt.Errorf(\"create Route request failed: %v\", response)\n\t\t}\n\t} else {\n\t\trequest := &ec2.ReplaceRouteInput{}\n\t\trequest.RouteTableId = checkNotNil(e.RouteTable.ID)\n\n\t\tif e.CIDR != nil || e.IPv6CIDR != nil {\n\t\t\trequest.DestinationCidrBlock = e.CIDR\n\t\t\trequest.DestinationIpv6CidrBlock = e.IPv6CIDR\n\t\t} else {\n\t\t\tklog.Fatal(\"both CIDR and IPv6CIDR were unexpectedly nil\")\n\t\t}\n\n\t\tif e.InternetGateway == nil && e.NatGateway == nil && e.TransitGatewayID == nil && e.VPCPeeringConnectionID == nil {\n\t\t\treturn fmt.Errorf(\"missing target for route\")\n\t\t} else if e.InternetGateway != nil {\n\t\t\trequest.GatewayId = checkNotNil(e.InternetGateway.ID)\n\t\t} else if e.NatGateway != nil {\n\t\t\trequest.NatGatewayId = checkNotNil(e.NatGateway.ID)","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/route.go#L217-L253","documentation":"After EC2 CreateRoute returns without an error, kOps checks the response's Return flag; when it is false the call technically succeeded at the transport level but AWS reports the route was not created, so this error is thrown. This is a defensive check against silent API-level failure where no Go error is returned.","triggerScenarios":"EC2 CreateRoute returning a 200 with Return=false, typically during partial failures, API inconsistencies, or edge-case service errors not mapped to a Go error.","commonSituations":"Rare AWS service-side anomalies; intermittent issues during cluster bring-up; retrying after an earlier ambiguous failure.","solutions":["Re-run kops update cluster to retry route creation","Check AWS service health for EC2 in the region","Inspect the dumped response object in the error message for details","If persistent, capture the full response and report to kOps with AWS request IDs"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"resp, err := cloud.EC2().CreateRoute(ctx, req)\nif err != nil { return err }\nif !aws.ToBool(resp.Return) {\n\t// transient API anomaly — retry with backoff\n\treturn fi.NewTryAgainLaterError(\"create Route returned Return=false\")\n}","preventionTips":["Re-run kops update cluster on this rare error — it is usually transient","Watch AWS EC2 service health for regional incidents","Retain the response dump from the error for AWS support tickets"],"tags":["aws","ec2","route","api-error"],"backgroundTag":"aws-api-call-failed","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}