{"record":{"id":"78f2d4e493041ece","repo":"kubernetes/kops","slug":"error-reading-expected-policy-for-sqs-q-v","errorCode":null,"errorMessage":"error reading expected Policy for SQS %q: %v","messagePattern":"error reading expected Policy for SQS %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/sqs.go","lineNumber":106,"sourceCode":"\tactualPolicy := attributes.Attributes[\"Policy\"]\n\tactualARN := attributes.Attributes[\"QueueArn\"]\n\tperiod, err := strconv.Atoi(attributes.Attributes[\"MessageRetentionPeriod\"])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error coverting MessageRetentionPeriod to int: %v\", err)\n\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}","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/sqs.go#L88-L124","documentation":"fi.ResourceAsString failed reading the expected policy document for the SQS queue task — the policy resource embedded in the model could not be materialized to a string.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/awstasks/sqs.go:106 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the policy resource referenced by the SQS spec is a readable literal or template","Re-run `kops update` after fixing the policy source"],"exampleFix":null,"handlingStrategy":"try-catch","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"}