### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Calling `describeTimeToLive` to a non-existent table returns a result rather than throwing resource not found.

Test case pseudo-code:
```
try {
  dynamo.describeTimeToLive(new DescribeTimeToLiveRequest()
         .withTableName("non-existent-table"));
  fail();
} catch (ResourceNotFoundException ex) {
  // Pass
}
```

### Expected Behavior

Expecting call to throw 

### How are you starting LocalStack?

Custom (please describe below)

### Steps To Reproduce

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

    TestContainers from Java

### Environment

```markdown
- OS: MacOS
- LocalStack: 2.2.0
```


### Anything else?

_No response_
if stream_type == "KEYS_ONLY":
                ddb_record.pop("OldImage", None)
                ddb_record.pop("NewImage", None)
            
            elif stream_type == "NEW_IMAGE":
                ddb_record.pop("OldImage", None)
            
            elif stream_type == "OLD_IMAGE":
                ddb_record.pop("NewImage", None)
        return records
    @classmethod
    def is_kinesis_stream_exists(cls, stream_arn):
        account_id = extract_account_id_from_arn(stream_arn)
        region_name = extract_region_from_arn(stream_arn)
        kinesis = connect_to(
            aws_access_key_id=account_id,
            aws_secret_access_key=TEST_AWS_SECRET_ACCESS_KEY,
            region_name=region_name,
        ).kinesis
        stream_name_from_arn = stream_arn.split("/", 1)[1]
        
        filtered = list(
            filter(
                lambda stream_name: stream_name == stream_name_from_arn,
                kinesis.list_streams()["StreamNames"],
            )
        )
        return bool(filtered)
class SSEUtils: