### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

My SQS queue is not receiving notifications from SNS when they both have fifo enabled:

```
#Create sqs
aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name onexlab.fifo --attributes FifoQueue=true
#create sns
aws --endpoint-url=http://localhost:4566 sns create-topic --name onexlab-sns.fifo --attributes FifoTopic=true,ContentBasedDeduplication=true
#create subscription
aws --endpoint-url=http://localhost:4566 sns subscribe --topic-arn arn:aws:sns:us-east-1:000000000000:onexlab-sns.fifo --protocol sqs --notification-endpoint  arn:aws:sqs:us-east-1:000000000000:onexlab.fifo
#publish messasge
aws --endpoint-url=http://localhost:4566 sns publish  --topic-arn arn:aws:sns:us-east-1:000000000000:onexlab-sns.fifo --message 'Welcome to Onexlab!' --message-group-id "test"
#check messages
aws --endpoint-url=http://localhost:4566 sqs receive-message --queue-url http://localhost:4566/000000000000/onexlab.fifo
```

No messages on the SQS queue.

### Expected Behavior

Expect the sqs queue to have the message.

### 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-compose up

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)
``` 
#Create sqs
aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name onexlab.fifo --attributes FifoQueue=true
#create sns
aws --endpoint-url=http://localhost:4566 sns create-topic --name onexlab-sns.fifo --attributes FifoTopic=true,ContentBasedDeduplication=true
#create subscription
aws --endpoint-url=http://localhost:4566 sns subscribe --topic-arn arn:aws:sns:us-east-1:000000000000:onexlab-sns.fifo --protocol sqs --notification-endpoint  arn:aws:sqs:us-east-1:000000000000:onexlab.fifo
#publish messasge
aws --endpoint-url=http://localhost:4566 sns publish  --topic-arn arn:aws:sns:us-east-1:000000000000:onexlab-sns.fifo --message 'Welcome to Onexlab!' --message-group-id "test"
#check messages
aws --endpoint-url=http://localhost:4566 sqs receive-message --queue-url http://localhost:4566/000000000000/onexlab.fifo
```


### Environment

```markdown
- OS: Mac os

- LocalStack:latest

version: '3.0'

services:
  localstack:
    image: localstack/localstack:latest
    environment: 
      - AWS_DEFAULT_REGION=us-east-1
      - EDGE_PORT=4566
      - SERVICES=sqs,sns
    ports:
      - '4566-4597:4566-4597'
    volumes:
      - "${TMPDIR:-/lib/localstack}:/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
```


### Anything else?

_No response_
try:
            body = json.loads(message_body)
            if not isinstance(body, dict):
                return False
        except json.JSONDecodeError:
            
            
            return False
        return self._evaluate_nested_filter_policy_on_dict(filter_policy, payload=body)
    def _evaluate_nested_filter_policy_on_dict(self, filter_policy, payload: dict) -> bool:
        """
        This method evaluate the filter policy recursively, while still being able to validate the `exists` condition.
        Example:
        nested_filter_policy = {
            "object": {
                "key": [{"prefix": "auto-"}],
                "nested_key": [{"exists": False}],
            },
            "test": [{"exists": False}],
        }
        payload = {
            "object": {
                "key": "auto-test",
            }
        }
        This function then iterates on top level keys of the filter policy: ("object", "test")
        The value of "object" is a dict, we need to evaluate this level of the filter policy.
        We pass the nested property values (the dict) as well as the values of the payload's field to the recursive
        function, to evaluate the conditions on the same level of depth.