title: BOTO3 - generate_presigned_url for `put_object` return `The request signature we calculated does not match the signature you provided`
body: <p>I'm trying to create a presigned url that will help some customers to upload files .
  Here my test script that is currently working</p>
  
  <pre><code># Get the service client.
  s3 = boto3.client('s3')
  boto3.set_stream_logger(name='botocore')
  
  # Generate the URL to get 'key-name' from 'bucket-name'
  url = s3.generate_presigned_url(
      ClientMethod='put_object',
      Params={
          'Bucket': s3_bucket_name,
          'Key': test_key,
      }    
  )
  
  files = StringIO("asdfasdfasdf")
  response = requests.put(url, data=files)
  
  print(str(response.content))
  </code></pre>
  
  <p>But if I'm adding:</p>
  
  <pre><code>`ACL': 'public-read' 
  </code></pre>
  
  <p>to <code>Params</code> (or add some metadata following the information in the <a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_object" rel="nofollow noreferrer">put_object documentation</a> I receive back from the server:</p>
  
  <pre><code>The request signature we calculated does not match the signature you provided. Check your key and signing method.
  </code></pre>
  
  <hr>
  
  <p>I've open also a issue on BOTO3:
  <a href="https://github.com/boto/boto3/issues/1722" rel="nofollow noreferrer">https://github.com/boto/boto3/issues/1722</a> </p>