kubernetes/kops · error
calling IAM GetRole on %s: %w
Error message
calling IAM GetRole on %s: %w
What it means
Fires in ListIAMRoles when iam.GetRole fails for a specific role with an error that is neither NoSuchEntity (skipped with a warning) nor a 403 (warned and skipped) — an unexpected API failure while fetching role details.
Source
Thrown at pkg/resources/aws/aws.go:2013
for paginator.HasMorePages() {
page, err := paginator.NextPage(ctx)
if err != nil {
return nil, fmt.Errorf("error listing IAM roles: %v", err)
}
for _, r := range page.Roles {
name := aws.ToString(r.RoleName)
getRequest := &iam.GetRoleInput{RoleName: r.RoleName}
roleOutput, err := c.IAM().GetRole(ctx, getRequest)
if err != nil {
if awsup.IsIAMNoSuchEntityException(err) {
klog.Warningf("could not find role %q. Resource may already have been deleted: %v", name, err)
continue
} else if awsup.AWSErrorCode(err) == "403" {
klog.Warningf("failed to determine ownership of %q: %v", name, err)
continue
}
return nil, fmt.Errorf("calling IAM GetRole on %s: %w", name, err)
}
for _, tag := range roleOutput.Role.Tags {
if fi.ValueOf(tag.Key) == ownershipTag && fi.ValueOf(tag.Value) == "owned" {
resourceTracker := &resources.Resource{
Name: name,
ID: name,
Type: "iam-role",
Deleter: DeleteIAMRole,
}
resourceTrackers = append(resourceTrackers, resourceTracker)
}
}
}
}
}
return resourceTrackers, nil
}View on GitHub (pinned to 4c8573c808)
Solutions
- Check iam:GetRole permission for the role ARN
- Retry; transient throttling or API errors can be resolved by re-running
- Inspect the wrapped error code to see why neither the NoSuchEntity nor 403 path applied
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/resources/aws/aws.go:2013 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/a81a68abec6a8d3e.
Report an issue: GitHub.