{"record":{"id":"78c4496bcde6edd0","repo":"kubernetes/kops","slug":"error-updating-autoscalinggroup-tags-v","errorCode":null,"errorMessage":"error updating AutoscalingGroup tags: %v","messagePattern":"error updating AutoscalingGroup tags: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go","lineNumber":671,"sourceCode":"\t\tempty := &AutoscalingGroup{}\n\t\tif !reflect.DeepEqual(empty, changes) {\n\t\t\tklog.Warningf(\"cannot apply changes to AutoScalingGroup: %v\", changes)\n\t\t}\n\n\t\tklog.V(2).Infof(\"Updating autoscaling group %s\", fi.ValueOf(e.Name))\n\n\t\tif _, err := t.Cloud.Autoscaling().UpdateAutoScalingGroup(ctx, request); err != nil {\n\t\t\treturn fmt.Errorf(\"error updating AutoscalingGroup: %v\", err)\n\t\t}\n\n\t\tif deleteTagsRequest != nil && len(deleteTagsRequest.Tags) > 0 {\n\t\t\tif _, err := t.Cloud.Autoscaling().DeleteTags(ctx, deleteTagsRequest); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error deleting old AutoscalingGroup tags: %v\", err)\n\t\t\t}\n\t\t}\n\t\tif updateTagsRequest != nil {\n\t\t\tif _, err := t.Cloud.Autoscaling().CreateOrUpdateTags(ctx, updateTagsRequest); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error updating AutoscalingGroup tags: %v\", err)\n\t\t\t}\n\t\t}\n\n\t\tif detachLBRequest != nil {\n\t\t\tif _, err := t.Cloud.Autoscaling().DetachLoadBalancers(ctx, detachLBRequest); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error detatching LoadBalancers: %v\", err)\n\t\t\t}\n\t\t}\n\t\tif attachLBRequest != nil {\n\t\t\tif _, err := t.Cloud.Autoscaling().AttachLoadBalancers(ctx, attachLBRequest); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error attaching LoadBalancers: %v\", err)\n\t\t\t}\n\t\t}\n\t\tif len(attachTGRequests) > 0 {\n\t\t\tfor _, attachTGRequest := range attachTGRequests {\n\t\t\t\tif _, err := t.Cloud.Autoscaling().AttachLoadBalancerTargetGroups(ctx, attachTGRequest); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"failed to attach target groups: %v\", err)\n\t\t\t\t}","sourceCodeStart":653,"sourceCodeEnd":689,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go#L653-L689","documentation":"kops wraps the AWS AutoScaling CreateOrUpdateTags API error when applying desired tags to an AutoScalingGroup in RenderAWS. It indicates AWS rejected the CreateOrUpdateTags call with the desired tag set.","triggerScenarios":"During ASG update, updateTagsRequest is non-nil (new/changed tags in the spec) and Autoscaling().CreateOrUpdateTags fails: invalid tag key/value (bad characters, too long), tag limit exceeded (ASGs allow 50 tags), throttling, or missing autoscaling:CreateOrUpdateTags permission.","commonSituations":"User added a cluster spec tag with invalid characters or exceeding the 256-char value limit; instance group has accumulated >50 tags; control-plane to control-plane tag renames adding many new tags; SCP denying tag writes.","solutions":["Validate tag keys/values in the cluster/instanceGroup spec: allowed characters, key <=128 chars, value <=256 chars.","Reduce total tags to <=50 per ASG (remove unnecessary cloudLabels).","Confirm IAM/SCP allows autoscaling:CreateOrUpdateTags.","Retry after backoff if the wrapped message indicates throttling."],"exampleFix":"// before: invalid tag value with illegal chars\ncloudLabels:\n  owner: team/foo&bar\n// after\ncloudLabels:\n  owner: team-foo-bar","handlingStrategy":"validation","validationCode":"func validateTag(k, v string) error {\n  if len(k) > 128 || len(v) > 256 {\n    return fmt.Errorf(\"tag %q value too long\", k)\n  }\n  if strings.ContainsAny(k+v, \"^`{}[]()*?#|\\\\<>!\") {\n    return fmt.Errorf(\"tag %q has invalid characters\", k)\n  }\n  return nil\n}\n// keep total tags <= 50\nif len(desiredTags) > 50 { return errors.New(\"ASG tag limit (50) exceeded\") }","typeGuard":null,"tryCatchPattern":"if _, err := svc.CreateOrUpdateTags(ctx, req); err != nil {\n  var ae smithy.APIError\n  if errors.As(err, &ae) && ae.ErrorCode() == \"ValidationError\" {\n    return fmt.Errorf(\"invalid tag in spec: %w\", err)\n  }\n  return retry(err)\n}","preventionTips":["Validate cloudLabels keys/values against AWS constraints before apply.","Keep ASG tag count under 50.","Check SCPs/IAM allow tag writes."],"tags":["aws","autoscaling","tags","cloud-api"],"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"}