{"record":{"id":"22f719ac7157c1c7","repo":"kubernetes/kops","slug":"error-creating-eventbridge-rule-v","errorCode":null,"errorMessage":"error creating EventBridge rule: %v","messagePattern":"error creating EventBridge rule: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/eventbridgerule.go","lineNumber":127,"sourceCode":"\n\tif a == nil {\n\t\tvar tags []eventbridgetypes.Tag\n\t\tfor k, v := range eb.Tags {\n\t\t\ttags = append(tags, eventbridgetypes.Tag{\n\t\t\t\tKey:   aws.String(k),\n\t\t\t\tValue: aws.String(v),\n\t\t\t})\n\t\t}\n\n\t\trequest := &eventbridge.PutRuleInput{\n\t\t\tName:         eb.Name,\n\t\t\tEventPattern: e.EventPattern,\n\t\t\tTags:         tags,\n\t\t}\n\n\t\t_, err := t.Cloud.EventBridge().PutRule(context.TODO(), request)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating EventBridge rule: %v\", err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype terraformEventBridgeRule struct {\n\tName         *string                  `cty:\"name\"`\n\tEventPattern *terraformWriter.Literal `cty:\"event_pattern\"`\n\tTags         map[string]string        `cty:\"tags\"`\n}\n\nfunc (_ *EventBridgeRule) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *EventBridgeRule) error {\n\tm, err := t.AddFileBytes(\"aws_cloudwatch_event_rule\", *e.Name, \"event_pattern\", []byte(*e.EventPattern), false)\n\tif err != nil {\n\t\treturn err\n\t}\n","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/eventbridgerule.go#L109-L145","documentation":"RenderAWS for EventBridgeRule calls PutRule to create or update the rule and wraps any API error with this message. It is thrown only when the rule does not yet exist (the create branch) and AWS rejects the PutRule call.","triggerScenarios":"PutRule fails: invalid EventPattern JSON, rule name violating the 64-char/[.\\-_A-Za-z0-9]+ pattern, eventbridge:PutRule denied, rule limit (default 300) exceeded, or throttling.","commonSituations":"Cluster spec with a hand-written eventPattern containing invalid JSON; IAM role missing eventbridge:PutRule; accounts that hit the EventBridge rules-per-event-bus quota.","solutions":["Validate the eventPattern is syntactically valid JSON and matches EventBridge pattern grammar.","Shorten/fix the rule name (max 64 chars, only letters, digits, . - _).","Add eventbridge:PutRule to the kOps IAM policy, or request a quota increase for rules per event bus.","Retry on throttling; check AWS Health/events for regional incidents."],"exampleFix":"// before\nEventPattern: fi.String(\"{'source':['aws.ec2']}\")\n// after (valid JSON, double quotes)\nEventPattern: fi.String(\"{\\\"source\\\":[\\\"aws.ec2\\\"]}\")","handlingStrategy":"validation","validationCode":"// Validate EventPattern JSON before applying\nimport encoding/json\nif err := json.Valid([]byte(fi.ValueOf(e.EventPattern))); !err {\n    return fmt.Errorf(\"invalid EventPattern JSON\")\n}\n// Rule name check\nif len(name) > 64 { return fmt.Errorf(\"rule name too long\") }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Lint eventPattern as JSON in cluster spec validation","Check IAM grants eventbridge:PutRule","Monitor rules-per-event-bus quota in the account"],"tags":["aws","eventbridge","create"],"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"}