### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Currently whilst tags can be set on an security group they do not seem to actually set, nor be shown in the visible:

```console
$ awslocal ec2 describe-security-group-rules --region eu-west-1 
{
    "SecurityGroupRules": [
  ...
        {
            "SecurityGroupRuleId": "sgr-a61b55ecc57fc7326",
            "GroupId": "sg-8142c14106428334a",
            "GroupOwnerId": "000000000000",
            "IsEgress": false,
            "IpProtocol": "tcp",
            "FromPort": 80,
            "ToPort": 80,
            "CidrIpv4": "0.0.0.0/0"
        }
    ]
}
```

I'm hoping this is the cause of  terraform always attempting to add rules every time it runs, but I thought that about #8528


### Expected Behavior

```console
$ aws ec2 describe-security-group-rules --region eu-west-1
{
    "SecurityGroups": [
...
        {
            "SecurityGroupRuleId": "sgr-092116e510c39844a",
            "GroupId": "sg-0316c5c1e70a68903",
            "GroupOwnerId": "586083211487",
            "IsEgress": false,
            "IpProtocol": "tcp",
            "FromPort": 80,
            "ToPort": 80,
            "CidrIpv4": "0.0.0.0/0",
            "Tags": [
                {
                    "Key": "test",
                    "Value": "test"
                }
            ]
        }
    ]
}
```

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

    localstack run

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

##### AWS

Note there is a default group and rule in localstack so we can just jump straight to checking that:

```
awslocal ec2 describe-security-group-rules
```

##### Terraform

I found this bug whilst investigating terraform continually applying rules, I believe it may be the cause (but I previously believed #8528 was):

```terraform
provider "aws" {
  region = "eu-west-1"
}

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_security_group" "example" {
  name = "example"
  vpc_id = resource.aws_vpc.example.id
}

resource "aws_vpc_security_group_ingress_rule" "http" {
  security_group_id = aws_security_group.example.id
  cidr_ipv4         = "0.0.0.0/0"
  from_port         = 80
  ip_protocol       = "tcp"
  to_port           = 80
  tags              = {
    "test" = "test"
  }
}
```

```
tflocal apply
tflocal apply # Should not change anything but currently does
```

### Environment

```markdown
- OS: 20.04.6
- LocalStack version: 2.1.1.dev
- LocalStack Docker container id: e79ee64af0e2
- LocalStack build date: 2023-07-06
- LocalStack build git hash: 3908ec6b
```


### Anything else?

_No response_
"""
        When sending a Pu request to S3 with a very raw request not having any indication that the request is
        directed to S3 (no signing, no specific S3 endpoint) and encoded as a form, the request will go through the
        ServiceNameParser handler.
        This parser will try to parse the form data (which in our case is binary data), and will fail with a decoding
        error. It also consumes the stream, and leaves S3 with no data to save.
        This test verifies that this scenario works by skipping the service name thanks to the early S3 CORS handler.
        """
        default_endpoint = f"http://{get_localstack_host().host_and_port()}"
        _key = "test-routing-key"
        key_url = f"{default_endpoint}/{s3_bucket}/{_key}"
        data = os.urandom(445529)
        resp = .put(
            key_url, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"}
        )
        assert resp.ok
        get_ = aws_client.s3.get_(Bucket=s3_bucket, Key=_key)
        assert get_["Body"].read() == data
        fake_key_url = f"{default_endpoint}/fake-bucket-{short_uid()}/{_key}"
        resp = .put(
            fake_key_url, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"}
        )
        assert b"NoSuchBucket" in resp.content
class TestS3MultiAccounts:
    @pytest.fixture
    def primary_client(self, aws_client):