[X] bug report
[ ] feature request

# Detailed description

The AWS API supports Authorization parameters as GET parameters, e.g. here's a GET request to SendMessage on SQS:

```
curl 'http://localhost:4566/000000000000/SomeQueue.fifo?Action=SendMessage&MessageGroupId=Default&MessageDeduplicationId=1615597859837&MessageBody=%7B%22gateway_id%22%3A%20%2204e73c80-3539-499c-92a4-a0b106c2f6ab%22%7D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210313%2Fus-east-1%2Fsqs%2Faws4_request&X-Amz-Date=20210313T011059Z&X-Amz-Expires=86400000&X-Amz-SignedHeaders=host&X-Amz-Signature=2c652c7bc9a3b75579db3d987d1e6dd056f0ac776c1e1d4ec91e2ce84e5ad3ae'
```

## Expected behavior

Should send the message and return receipt information.

## Actual behavior

Returns...

```
<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>NoSuchBucket</Code>
    <Message>The specified bucket does not exist</Message>
    <BucketName>000000000000</BucketName>
    <RequestID>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestID>
</Error>
```

""" Function decorator to protect a function from stack overflows -
        raises an exception if a (potential) infinite recursion is detected. """
    def _decorator(wrapped):
        @functools.wraps(wrapped)
        def func(*args, **kwargs):
            def _matches(frame):
                if frame.function != wrapped.__name__:
                    return False
                frame = frame.frame
                if not match_parameters:
                    return False
                
                prev_call_args = {frame.f_code.co_varnames[i]: frame.f_locals[frame.f_code.co_varnames[i]]
                                  for i in range(frame.f_code.co_argcount)}
                
                sig = inspect.signature(wrapped)
                this_call_args = dict(zip(sig.parameters.keys(), args))
                this_call_args.update(kwargs)
                return prev_call_args == this_call_args
            matching_frames = [frame[2] for frame in inspect.stack(context=1) if _matches(frame)]
            if matching_frames:
                raise RecursionError('(Potential) infinite recursion detected')
            return wrapped(*args, **kwargs)
        return func
    return _decorator
def is_string(s, include_unicode=True, exclude_binary=False):