2017-05-17 2 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") 
관련 문제