When PUTting an S3 object to Localstack with attached Metadata, if a key contains an underscore it is replaced with a dash.

However, when the same request is performed against the real S3, the key is not modified.

Example Input:
key_with_underscores => test

Localstack Result:
key-with-underscores => test

S3 Result:
key_with_underscores => test

Localstack Version: 0.10.5

Tested using AWS v2 S3 client
return """
            <PostResponse>
                <Location>{protocol}://{host}/{encoded_key}</Location>
                <Bucket>{bucket}</Bucket>
                <Key>{key}</Key>
                <ETag>{etag}</ETag>
            </PostResponse>
            """.format(
            protocol=get_service_protocol(),
            host=config.HOSTNAME_EXTERNAL,
            encoded_key=urlparse.quote(key, safe=''),
            key=key,
            bucket=bucket_name,
            etag='d41d8cd98f00b204e9800998ecf8427f',
        )
    def get_forward_url(self, method, path, data, headers):
        def sub(match):
            
            bucket_name = normalize_bucket_name(match.group(1))
            return '/%s%s' % (bucket_name, match.group(2) or '')
        path_new = re.sub(r'/([^?/]+)([?/].*)?', sub, path)
        if path == path_new:
            return
        url = '%s://%s:%s%s' % (get_service_protocol(), constants.LOCALHOST,
            constants.DEFAULT_PORT_S3_BACKEND, path_new)
        return url
    def return_response(self, method, path, data, headers, response):