### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When trying to create a stack with only a VPC and a TargetGroup, the deploy command fails with the following error:

`2022-03-14T14:28:13.883:WARNING:localstack.utils.cloudformation.template_deployer: Error calling <bound method ClientCreator._create_api_method.<locals>._api_call of <botocore.client.ElasticLoadBalancingv2 object at 0x7f8f4f3fa6a0>> with params: {'Name': 'dfsd', 'Protocol': 'HTTP', 'Port': '3000', 'VpcId': 'vpc-0336b473', 'TargetType': 'ip'} for resource: {'Type': 'AWS::ElasticLoadBalancingV2::TargetGroup', 'LogicalResourceId': 'targetGroup1', 'Properties': {'Name': 'dfsd', 'Port': '3000', 'Protocol': 'HTTP', 'TargetType': 'ip', 'VpcId': 'vpc-0336b473'}, '_state_': {}}`

### Expected Behavior

A working cloudformation template should be created

### How are you starting LocalStack?

With the `localstack` script

### Steps To Reproduce

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

    TEST_AWS_ACCOUNT_ID="XXXX" LOCALSTACK_API_KEY=XXXX localstack start -d

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

    awslocal cloudformation deploy --stack-name cfn-quickstart-stack --template-file "./cfn-quickstart-stack.yaml" # The quickstart s3 bucket from the sample
    awslocal cloudformation deploy --stack-name my_stack --template-file deployment/environment/local-template.json --s3-bucket cfn-quickstart-bucket

#### The template used in the second command above:

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "myVPC" : {
      "Type" : "AWS::EC2::VPC",
      "Properties" : {
        "CidrBlock" : "10.0.0.0/16",
        "EnableDnsSupport" : "true",
        "EnableDnsHostnames" : "true"
      }
    },
    "targetGroup1": {
      "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
      "Properties": {
        "Name": "dfsd",
        "Port": "3000",
        "Protocol": "HTTP",
        "TargetType": "ip",
        "VpcId": { "Ref" : "myVPC" }
      }
    }
  },
  "Description": "Room Service Stack"
}
```

### Environment

```markdown
- OS: MacOS Big Sur 11.6
- LocalStack: latest
```

### Anything else?

_No response_
self.mutex = threading.RLock()
    def default_attributes(self) -> QueueAttributeMap:
        return {
            QueueAttributeName.ApproximateNumberOfMessages: self.visible._qsize,
            QueueAttributeName.ApproximateNumberOfMessagesNotVisible: lambda: len(self.inflight),
            QueueAttributeName.ApproximateNumberOfMessagesDelayed: lambda: len(self.delayed),
            QueueAttributeName.CreatedTimestamp: str(now()),
            QueueAttributeName.DelaySeconds: "0",
            QueueAttributeName.LastModifiedTimestamp: str(now()),
            QueueAttributeName.MaximumMessageSize: "262144",
            QueueAttributeName.MessageRetentionPeriod: "345600",
            QueueAttributeName.QueueArn: self.arn,
            QueueAttributeName.ReceiveMessageWaitTimeSeconds: "0",
            QueueAttributeName.VisibilityTimeout: "30",
            QueueAttributeName.SqsManagedSseEnabled: "false",
        }
    def update_delay_seconds(self, value: int):
        """
        For standard queues, the per-queue delay setting is not retroactive—changing the setting doesn't affect the delay of messages already in the queue.
        For FIFO queues, the per-queue delay setting is retroactive—changing the setting affects the delay of messages already in the queue.
        https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html
        :param value: the number of seconds
        """
        self.attributes[QueueAttributeName.DelaySeconds] = str(value)
    def update_last_modified(self, timestamp: int = None):
        if timestamp is None:
            timestamp = now()
        self.attributes[QueueAttributeName.LastModifiedTimestamp] = str(timestamp)
    @property
    def arn(self) -> str: