func attachPolicyToRole(conn *iam.IAM, role string, arn string) error { _, err := conn.AttachRolePolicy(&iam.AttachRolePolicyInput{ RoleName: aws.String(role), PolicyArn: aws.String(arn), }) if err != nil { return err } return nil }
func attachPolicyToRoles(conn *iam.IAM, roles []*string, arn string) error { for _, r := range roles { _, err := conn.AttachRolePolicy(&iam.AttachRolePolicyInput{ RoleName: r, PolicyArn: aws.String(arn), }) if err != nil { return err } } return nil }
func attachPolicyToRoles(conn *iam.IAM, roles []*string, arn string) error { for _, r := range roles { _, err := conn.AttachRolePolicy(&iam.AttachRolePolicyInput{ RoleName: r, PolicyArn: aws.String(arn), }) if err != nil { return err } var attachmentErr error attachmentErr = resource.Retry(2*time.Minute, func() *resource.RetryError { input := iam.ListRolePoliciesInput{ RoleName: r, } attachedPolicies, err := conn.ListRolePolicies(&input) if err != nil { return resource.NonRetryableError(err) } if len(attachedPolicies.PolicyNames) > 0 { var foundPolicy bool for _, policyName := range attachedPolicies.PolicyNames { if strings.HasSuffix(arn, *policyName) { foundPolicy = true break } } if !foundPolicy { return resource.NonRetryableError(err) } } return nil }) if attachmentErr != nil { return attachmentErr } } return nil }