{"record":{"id":"7ddcc8b1bf3f3a2e","repo":"kubernetes/kops","slug":"error-suspending-processes-v","errorCode":null,"errorMessage":"error suspending processes: %v","messagePattern":"error suspending processes: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go","lineNumber":449,"sourceCode":"\t\t\treturn fmt.Errorf(\"error creating AutoScalingGroup: %s\", message)\n\t\t}\n\n\t\t// @step: attempt to enable the metrics for us\n\t\tif _, err := t.Cloud.Autoscaling().EnableMetricsCollection(ctx, &autoscaling.EnableMetricsCollectionInput{\n\t\t\tAutoScalingGroupName: e.Name,\n\t\t\tGranularity:          e.Granularity,\n\t\t\tMetrics:              e.Metrics,\n\t\t}); err != nil {\n\t\t\treturn fmt.Errorf(\"error enabling metrics collection for AutoscalingGroup: %v\", err)\n\t\t}\n\n\t\tif len(*e.SuspendProcesses) > 0 {\n\t\t\tprocessQuery := &autoscaling.SuspendProcessesInput{}\n\t\t\tprocessQuery.AutoScalingGroupName = e.Name\n\t\t\tprocessQuery.ScalingProcesses = *e.SuspendProcesses\n\n\t\t\tif _, err := t.Cloud.Autoscaling().SuspendProcesses(ctx, processQuery); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error suspending processes: %v\", err)\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// @logic: else we have found a autoscaling group and we need to evaluate the difference\n\t\trequest := &autoscaling.UpdateAutoScalingGroupInput{\n\t\t\tAutoScalingGroupName: e.Name,\n\t\t}\n\n\t\tsetup := func(req *autoscaling.UpdateAutoScalingGroupInput) *autoscalingtypes.MixedInstancesPolicy {\n\t\t\tif req.MixedInstancesPolicy == nil {\n\t\t\t\treq.MixedInstancesPolicy = &autoscalingtypes.MixedInstancesPolicy{\n\t\t\t\t\tInstancesDistribution: &autoscalingtypes.InstancesDistribution{},\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn req.MixedInstancesPolicy\n\t\t}","sourceCodeStart":431,"sourceCodeEnd":467,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go#L431-L467","documentation":"SuspendProcesses failed while suspending the configured scaling processes right after ASG creation; the ASG exists but its suspend-processes settings were not applied. The wrapped error is the raw AWS autoscaling API error.","triggerScenarios":"After ASG creation, SuspendProcesses is called with e.SuspendProcesses entries and AWS rejects it — invalid process name, or the ASG was just created and the process set is not applicable.","commonSituations":"Typo'd process names in spec (e.g. 'AzRebalance' misspelled), or transient AWS errors right after group creation.","solutions":["Verify process names against valid ASG process names (Launch, Terminate, HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, ScheduledActions, AddToLoadBalancer, InstanceRefresh)","Re-run `kops update cluster` to retry","Check IAM policy allows autoscaling:SuspendProcesses"],"exampleFix":"// before\nsuspendProcesses: [Healthcheck]\n// after\nsuspendProcesses: [HealthCheck]","handlingStrategy":"validation","validationCode":"var validProcesses = []string{\"Launch\",\"Terminate\",\"HealthCheck\",\"ReplaceUnhealthy\",\"AZRebalance\",\"AlarmNotification\",\"ScheduledActions\",\"AddToLoadBalancer\",\"InstanceRefresh\"}\nfor _, p := range ig.Spec.SuspendProcesses {\n  if !slices.Contains(validProcesses, p) { return fmt.Errorf(\"invalid ASG process %q\", p) }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Copy process names exactly (case-sensitive) from AWS docs","Avoid suspending HealthCheck/ReplaceUnhealthy unless intentional — nodes won't be replaced","Grant autoscaling:SuspendProcesses in automation IAM policies"],"tags":["aws","autoscaling","scaling-processes"],"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"}