【问题标题】:An error occurred (InvalidArgument) when calling the PutBucketAcl operation: Unknown调用 PutBucketAcl 操作时发生错误 (InvalidArgument):未知
【发布时间】:2019-03-05 16:43:25
【问题描述】:

我在调用boto3.client的put_bucket_acl(**kwargs)方法设置bucket acl时遇到了这个异常。 (PS:是一桶ceph对象而不是aws)


我的代码:

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})

我也试试 Session.client:

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)

如果我删除参数 AccessControlPolicy,它运行成功

s3_client.put_bucket_acl(Bucket=test_bucket, ACL='private')

我是否以错误的方式调用此方法? 但是指南也以同样的方式调用这个方法:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_bucket_acl 寻求任何帮助。

【问题讨论】:

    标签: amazon-s3 boto3 botocore


    【解决方案1】:

    这样设置bucket acl就可以了:

    s3_client.put_bucket_acl(Bucket=test_bucket, AccessControlPolicy={...})
    

    ACL 和 AccessControlPolicy 是 AccessControlList,参数 AccessControlList 只能是以下之一:ACL、AccessControlPolicy、Bucket、ContentMD5、GrantFullControl、GrantRead、GrantReadACP、GrantWrite、GrantWriteACP。后来我需要阅读botocore的代码,找出ceph s3和amazon s3的区别。思考阅读。

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 1970-01-01
      • 2020-01-16
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2017-12-07
      相关资源
      最近更新 更多