AWS boto3 grantfullcontrol 语法

Arv*_*amy 1 python amazon-web-services boto3

我正在使用 Python boto3 将存储桶中所有对象的完全控制权授予另一个帐户。这是我拥有的片段:

s3 = boto3.resource('s3') 
bucket = s3.Bucket("bucketname")
for key in bucket.objects.all():
    key.put(GrantFullControl="id=XXXX")
Run Code Online (Sandbox Code Playgroud)

这段代码运行良好并更改了所有者,但是它用 0 个字节重写了对象。这是因为 put 方法创建了一个新对象吗?更改ACL属性的方法是什么?

Arv*_*amy 5

得到了解决。Put 方法显然创建了对象,这就是为什么重写一个同名的空对象。还有另一种方法 objectacl 更新对象 ACL 属性。下面是我更新的代码:

for key in bucket.objects.all(): s3.ObjectAcl("bucketname", 
    key.key).put(GrantFullControl="id=XXX")
Run Code Online (Sandbox Code Playgroud)