### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I create a CloudFormation stack with an `AWS::ApiGateway::UsagePlan` resource, but that resource is stuck in `UPDATE_IN_PROGRESS`. 

And the resource hasn't been created:
```
> aws --endpoint-url=http://localhost:4566 apigateway get-usage-plans
{
    "items": []
}
```

### Expected Behavior

A UsagePlan is created. I need this, so I can attach an API Key to it.

### 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`)

> $env:LOCALSTACK_API_KEY=''
> $env:LAMBDA_EXECUTOR='docker'
> docker-compose -f docker-compose-localstack.yaml up

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

> aws --endpoint-url=http://localhost:4566 s3api create-bucket --bucket timeseries-ingest-lambda-artifacts
> aws --endpoint-url=http://localhost:4566 s3 cp C:\AlsoEnergy\timeseriesingest\GenericIngestAPILambdaFunctions\bin\Release\netcoreapp3.1\index.zip s3://timeseries-ingest-lambda-artifacts/GenericIngestAPILambdaFunctions/index.zip
> aws --endpoint-url=http://localhost:4566 cloudformation create-stack --stack-name test-kinesis-api --template-body file://C:\AlsoEnergy\timeseriesingest\cloudformation-templates\cloudformation-kinesis-api-resources.yaml --parameters ParameterKey=KinesisStreamName,ParameterValue=unified-ingest ParameterKey=Environment,ParameterValue=test

### Environment

```markdown
- OS: Windows 
- LocalStack: 
   localstack_main | LocalStack build date: 2022-03-01
   localstack_main | LocalStack build git hash: ff0ba560
```


### Anything else?

_No response_
if none_values:
                raise Exception(
                    "Cannot resolve CF fn::Join %s due to null values: %s" % (value, join_values)
                )
            return value[keys_list[0]][0].join([str(v) for v in join_values])
        if stripped_fn_lower == "sub":
            item_to_sub = value[keys_list[0]]
            attr_refs = {r: {"Ref": r} for r in STATIC_REFS}
            if not isinstance(item_to_sub, list):
                item_to_sub = [item_to_sub, {}]
            result = item_to_sub[0]
            item_to_sub[1].update(attr_refs)
            for key, val in item_to_sub[1].items():
                val = resolve_refs_recursively(stack, val)
                result = result.replace("${%s}" % key, val)
            
            result = resolve_placeholders_in_string(result, stack=stack)
            return result
        if stripped_fn_lower == "findinmap":
            attr = resolve_refs_recursively(stack, value[keys_list[0]][1])
            result = resolve_ref(stack, value[keys_list[0]][0], attribute=attr)
            if not result:
                resources = stack.resources
                raise Exception(
                    f"Cannot resolve fn::FindInMap: {value[keys_list[0]]} {list(resources.keys())}"
                )
            key = value[keys_list[0]][2]
            if not isinstance(key, str):
                key = resolve_refs_recursively(stack, key)
            return result.get(key)