我正在使用Python boto3将存储桶中所有对象的完全控制权授予另一个帐户。这是我的代码片段:
s3 = boto3.resource('s3')
bucket = s3.Bucket("bucketname")
for key in bucket.objects.all():
key.put(GrantFullControl="id=XXXX")
此代码运行正常并更改所有者但是它使用0字节重写对象。这是因为put方法创建了一个新对象吗?更改ACL属性的方法是什么?
答案 0 :(得分:4)
得到了解决。 Put方法显然创建了对象,这就是重写具有相同名称的空对象的原因。还有另一种方法objectacl,它更新对象的ACL属性。以下是我更新的代码:
for key in bucket.objects.all(): s3.ObjectAcl("bucketname",
key.key).put(GrantFullControl="id=XXX")