2017-05-17 22 views
0

私はPython boto3を使用して、バケット内のすべてのオブジェクトを別のアカウントにフルコントロールできます。ここに私が持っているスニペットがあります:AWS boto3 grantfullcontrol構文

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 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") 
関連する問題