### 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 cache is None:
        cache = {}
    if not table_name:
        return
    table_arn = arns.dynamodb_table_arn(table_name)
    account_id = extract_account_id_from_arn(table_arn)
    region_name = extract_region_from_arn(table_arn)
    cached = cache.get(table_arn)
    if isinstance(cached, bool):
        return cached
    lambda_client = connect_to(aws_access_key_id=account_id, region_name=region_name).lambda_
    sources = lambda_client.list_event_source_mappings(EventSourceArn=table_arn)[
        "EventSourceMappings"
    ]
    result = False
    if sources:
        result = True
    if not result and dynamodbstreams_api.get_stream_for_table(account_id, region_name, table_arn):
        result = True
    
    
    
    table_name = table_arn.split("/", 1)[-1]
    table_definitions: Dict = get_store(account_id, region_name).table_definitions
    if not result and table_definitions.get(table_name):
        if table_definitions[table_name].get("KinesisDataStreamDestinationStatus") == "ACTIVE":
            result = True
    cache[table_arn] = result
    return result
def get_updated_records(table_name: str, existing_items: List) -> List: