### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When attempting to list roles where permission boundaries are attached the response cannot be serialized 

`aws --endpoint-url=http://localhost:4566 iam list-roles --region ap-southeast-2`
```
An error occurred (InternalError) when calling the ListRoles operation (reached max retries: 2): exception while calling iam.ListRoles: Invalid type when serializing AttachedPermissionsBoundary: '<Element 'member' at 0xffff8275ef20>' cannot be parsed to structure.
```

### Expected Behavior

Expect that all roles are listed

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    docker run localstack/localstack

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

* Create an IAM policy
* Create an IAM role which used the policy as a permission boundary
* Attempt to list all roles with `aws --endpoint-url=http://localhost:4566 iam list-roles --region ap-southeast-2`


### Environment

```markdown
- OS: MacOS
- LocalStack: latest
```


### Anything else?

_No response_
policy_source_arn: arnType,
        action_names: ActionNameListType,
        policy_input_list: SimulationPolicyListType = None,
        permissions_boundary_policy_input_list: SimulationPolicyListType = None,
        resource_arns: ResourceNameListType = None,
        resource_policy: policyDocumentType = None,
        resource_owner: ResourceNameType = None,
        caller_arn: ResourceNameType = None,
        context_entries: ContextEntryListType = None,
        resource_handling_option: ResourceHandlingOptionType = None,
        max_items: maxItemsType = None,
        marker: markerType = None,
    ) -> SimulatePolicyResponse:
        backend = get_iam_backend(context)
        policy = backend.get_policy(policy_source_arn)
        policy_version = backend.get_policy_version(policy_source_arn, policy.default_version_id)
        try:
            policy_statements = json.loads(policy_version.document).get("Statement", [])
        except Exception:
            raise NoSuchEntityException("Policy not found")
        evaluations = [
            self.build_evaluation_result(action_name, resource_arn, policy_statements)
            for action_name in action_names
            for resource_arn in resource_arns
        ]
        response = SimulatePolicyResponse()
        response["IsTruncated"] = False
        response["EvaluationResults"] = evaluations
        return response
    def delete_policy(self, context: RequestContext, policy_arn: arnType) -> None: