{"record":{"id":"acaa30f89aef020b","repo":"kubernetes/kops","slug":"error-parsing-expected-policy-for-sqs-q-v","errorCode":null,"errorMessage":"error parsing expected Policy for SQS %q: %v","messagePattern":"error parsing expected Policy for SQS %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/sqs.go","lineNumber":111,"sourceCode":"\t}\n\n\ttags, err := cloud.SQS().ListQueueTags(ctx, &sqs.ListQueueTagsInput{\n\t\tQueueUrl: aws.String(url),\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error listing SQS queue tags: %v\", err)\n\t}\n\n\t// We parse both as JSON; if the json forms are equal we pretend the actual value is the expected value\n\tif q.Policy != nil {\n\t\texpectedPolicy, err := fi.ResourceAsString(q.Policy)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error reading expected Policy for SQS %q: %v\", aws.ToString(q.Name), err)\n\t\t}\n\t\texpectedJson := make(map[string]interface{})\n\t\terr = json.Unmarshal([]byte(expectedPolicy), &expectedJson)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing expected Policy for SQS %q: %v\", aws.ToString(q.Name), err)\n\t\t}\n\t\tactualJson := make(map[string]interface{})\n\t\terr = json.Unmarshal([]byte(actualPolicy), &actualJson)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing actual Policy for SQS %q: %v\", aws.ToString(q.Name), err)\n\t\t}\n\n\t\tif err := normalizePolicy(expectedJson); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif err := normalizePolicy(actualJson); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif reflect.DeepEqual(actualJson, expectedJson) {\n\t\t\tklog.V(2).Infof(\"actual Policy was json-equal to expected; returning expected value\")\n\t\t\tactualPolicy = expectedPolicy\n\t\t\tq.Policy = fi.NewStringResource(expectedPolicy)","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/sqs.go#L93-L129","documentation":"The expected policy document for the SQS queue failed json.Unmarshal, so it cannot be normalized for comparison against the actual AWS policy; the expected policy in the spec is not valid JSON.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/awstasks/sqs.go:111 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Validate the expected policy JSON (e.g. `jq . policy.json`)","Fix or replace the policy document referenced by the SQS task"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}