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
bucket_name = normalize_bucket_name(bucket_name)
    response = Response()
    exists, code = bucket_exists(bucket_name)
    if not exists:
        response.status_code = code
        return response
    if not isinstance(cors, dict):
        cors = xmltodict.parse(cors)
    BUCKET_CORS[bucket_name] = cors
    response.status_code = 200
    return response
def delete_cors(bucket_name):
    bucket_name = normalize_bucket_name(bucket_name)
    response = Response()
    exists, code = bucket_exists(bucket_name)
    if not exists:
        response.status_code = code
        return response
    BUCKET_CORS.pop(bucket_name, {})
    response.status_code = 200
    return response
def append_cors_headers(bucket_name, request_method, request_headers, response):