2017-03-10 2 views
1

버킷 내부의 키에 액세스하려고 시도합니다. 버킷에 대한 권한은 없지만 키에 대한 액세스는 시도합니다.boto s3 버킷 대 get_bucket

conn = boto.connect_s3(key, secret_key) 
my_bucket = conn.get_bucket('a_bucket') 

S3ResponseError: S3ResponseError: 403 Forbidden를 얻을 : 는 get_key('this/is/my_key')을 할 수 있도록하기 위해, 나는 양동이 객체가 필요합니다. 한편

다음 작품

my_bucket = boto.s3.bucket.Bucket(conn, 'a_bucket') 
my_bucket.get_key('this/is/my_key') 

질문 : 객체 Bucket를 만들고 get_bucket 방법을 사용하여 차이점은 무엇입니까? docu 확인 나는 확인을위한 확인 만 볼 수 있습니다. 다른 건 없니?

답변

1

get_bucket의 유효성 검사 (validate=True 기본값)는 호출시 버킷의 존재 여부를 확인합니다. 버킷에 액세스 할 권한이 없으므로 요청이 거부됩니다 (403). 다른 경우에는 클래스 인스턴스화가 유효성 검사를 수행하지 않는 것처럼 보이므로 get_key 메서드가 의도 한대로 작동합니다. listObject 권한

get_key()는 S3 필요

:

따라서 다음 줄은 어떤 버킷을 생성하지 않습니다 GetObject를 권한을

+0

네 ..이게 유일한 차이 인 것 같습니다. 'validate = False'를 사용하면 작동합니다. – ezdazuzena

1

get_bucket는() (S3)가 필요합니다.

my_bucket = boto.s3.bucket.Bucket(conn, 'a_bucket') 

그냥 버킷을 가리키는 python 개체 클래스를 만듭니다. 버킷 관련 작업을 수행하지 않는 한 오류가 없습니다. 오류없이 get_key()를 수행 할 수 있다면 버킷에 s3 : GetObject 권한이 부여되었음을 의미합니다.