2017-05-17 33 views
0

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

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

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

+0

得到了解决。 Put方法创建对象,这就是为什么使用相同名称重写空对象的原因。还有另一种更新对象ACL属性的方法objectacl。以下是我更新后的代码: for key.bucket.objects.all(): s3.ObjectAcl(“bucketname”,key.key).put(GrantFullControl =“id = XXX”) –

回答

1

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

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