### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When trying to use CloudWatch as a target for an EventBridge eventbus I receive a warning `WARNING:localstack.utils.aws.aws_stack: Unsupported Events rule target ARN: "arn:aws:logs:us-east-1:000000000000:log-group:/aws/events/log-imports"` and nothing happens.

### Expected Behavior

I expected to be able to use CloudWatch loggroup as an EventBrigde eventbus target, like I can using AWS.

### 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.yaml`

#### Additional files
JSON file needed for the `put-events` call

```
[
  {
    "Source": "com.mycompany.myapp",
    "Detail": "{ \"key1\": \"value1\", \"key2\": \"value2\" }",
    "Resources": [
      "resource1",
      "resource2"
    ],
    "DetailType": "myDetailType",
    "EventBusName": "messages-eb"
  }
]
```

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

    awslocal logs create-log-group --log-group-name /aws/events/log-imports
    awslocal events create-event-bus --name messages-eb
    awslocal events put-rule --name forward-message --event-bus-name messages-eb --event-pattern "{""account"": [""000000000000""]}"
    awslocal events put-targets --rule forward-message --event-bus-name messages-eb --targets "Id"="1","Arn"="arn:aws:logs:us-east-1:000000000000:log-group:/aws/events/log-imports"

    awslocal events put-events --entries file://events.json
    


### Environment

```markdown
- OS: Windows 10
- LocalStack: 0.12.17
- Docker Desktop (with WSL2)
```


### Anything else?

_No response_
"""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):