<!-- Love localstack? Please consider supporting our collective:
👉  https://opencollective.com/localstack/donate -->

# Type of request: This is a ...

[*] bug report
[ ] feature request

# Detailed description

When setting up a FIFO SNS topic with a FIFO SQS subscriber, in the case where a `MessageGroupId` is sent to the SNS topic it fails when being sent to the SQS queue as the `MessageGroupId` isn't passed along.

## Expected behavior

`MessageGroupId` should be passed along to the SQS queue

## Actual behavior

It's not passed along and it will error with the message:

```An error occurred (MissingParameter) when calling the SendMessage operation: The request must contain the parameter MessageGroupId.```


I believe the error is around here:
https://github.com/localstack/localstack/blob/master/localstack/services/sns/sns_listener.py#L295

# Steps to reproduce

```
        aws sns create-topic --attributes=FifoTopic=true --name local_sns --endpoint-url=http://localstack:4566
        aws sqs create-queue --endpoint-url=http://localstack:4566 --queue-name local_queue
        aws --endpoint-url=http://localstack:4566 sns subscribe --topic-arn arn:aws:sns:eu-west-1:000000000000:local_sns --protocol sqs --notification-endpoint http://localstack:4566/000000000000/local_queue
```

Then sending a new message to the topic with a messagegroupid results in the error above.


## Command used to start LocalStack

Docker compose

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

...

if type(conditions) is not list:
        conditions = [conditions]
    if attribute['Type'] == 'String.Array':
        values = ast.literal_eval(attribute['Value'])
        for value in values:
            for condition in conditions:
                if evaluate_condition(value, condition, message_attributes, criteria):
                    return True
    else:
        for condition in conditions:
            if evaluate_condition(attribute['Value'], condition, message_attributes, criteria):
                return True
    return False
def check_filter_policy(filter_policy, message_attributes):
    if not filter_policy:
        return True
    for criteria in filter_policy:
        conditions = filter_policy.get(criteria)
        attribute = message_attributes.get(criteria)
        if attribute is None:
            return False
        if evaluate_filter_policy_conditions(conditions, attribute, message_attributes, criteria) is False:
            return False
    return True
def is_raw_message_delivery(susbcriber):
    return susbcriber.get('RawMessageDelivery') in ('true', True, 'True')