title: An error occurred (InvalidArgument) when calling the PutBucketAcl operation: Unknown
body: <p>I got this exception when calling the method put_bucket_acl(**kwargs) of boto3.client to set bucket acl. (PS: it's a bucket of ceph object instead of aws)</p>
  
  <hr>
  
  <p>My code :</p>
  
  <pre><code>import boto3
  import copy
  
  s3_client = boto3.client('s3', 
          aws_access_key_id=s3_conf['ak'], 
          aws_secret_access_key=s3_conf['sk'], 
          endpoint_url=s3_conf["host"])
  bucket_acl = s3.BucketAcl(test_bucket)
  bucket_acl.grants.append(new_grants)
  bucket_acl.put(ACL='private', AccessControlPolicy={'Grants': bucket_acl.grants, 'Owner': bucket_acl.owner})
  </code></pre>
  
  <p>I also try Session.client:</p>
  
  <pre><code>session = Session(s3_conf["ak"], s3_conf["sk"])
  s3 = session.resource("s3", endpoint_url=s3_conf["host"])
  s3_client = session.client("s3", endpoint_url=s3_conf["host"])
  
  rsp = s3_client.get_bucket_acl(Bucket=test_bucket)
  old_access_control_policy = { 'Grants': copy.deepcopy(rsp['Grants']), 'Owner': copy.deepcopy(rsp['Owner']) }
  new_access_control_policy = copy.deepcopy(old_access_control_policy)
  new_access_control_policy['Grants'].append(new_grants)
  s3_client.put_bucket_acl(Bucket=test_bucket, ACL='private', AccessControlPolicy=old_access_control_policy)
  </code></pre>
  
  <p>if I remove the param AccessControlPolicy, it runs succeed</p>
  
  <pre><code>s3_client.put_bucket_acl(Bucket=test_bucket, ACL='private')
  </code></pre>
  
  <p>Am I call this method in a wrong way? 
  But the guide also call this call this method in same way :<a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_bucket_acl" rel="nofollow noreferrer">https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_bucket_acl</a>
  Thinks for any help.</p>