2017-05-16 2 views
0

나는 아마존 S3에 콘텐츠를 업로드하려고하지만 난이 오류가 점점 오전 :AWS SDK Boto3 : boto3.exceptions.unknownapiversionerror

boto3.exceptions.unknownapiversionerror: The 's3' resource does not an API Valid API versions are: 2006-03-01

import boto3 
boto3.resource('s3',**AWS_ACCESS_KEY_ID**,**AWS_PRIVATE_KEY*‌​*) 
bucket = s3.Bucket(**NAME OF BUCKET**) 
obj = bucket.Object(**KEY**) 
obj.upload_fileobj(**FILE OBJECT**) 
+0

이 오류를 일으킨 코드는 어디에 있습니까? 그리고 boto3 버전은 무엇입니까? – mootmoot

+0

안녕하세요, boto3 = 1.4.4 및 botocore = 1.5.46입니다. 이것은 코드입니다. '수입 boto3 ' –

+0

'boto3.resource ('S3', ** AWS_ACCESS_KEY_ID **, ** AWS_PRIVATE_KEY **) 버킷 = s3.Bucket (** BUCKET의 이름 **) OBJ = bucket.Object (** KEY **) obj.upload_fileobj (** FILE OBJECT **)' –

답변

0

오류는 다음과 같이 "DataNotFound"에 발생한 예외에 의해 발생을 boto3.Session 소스 코드. 아마도 개발자는 사람들이 올바른 객체를 전달하지 않는 실수를 저 지르지 않았을 수도 있습니다.

If you read the boto3 documentation example 이것은 데이터를 업로드하는 올바른 방법입니다.

import boto3 
boto3.resource('s3',**AWS_ACCESS_KEY_ID**,**AWS_PRIVATE_KEY*‌​*) 
bucket = s3.Bucket(**NAME OF BUCKET**) 
obj = bucket.Object("prefix/object_key_name") 
# You must pass the file object ! 
with open('filename', 'rb') as fileobject: 
    obj.upload_fileobj(fileobject) 
+0

Django의 form 객체에서 파일을 가져 가고있다. Like ... 'File = forms.filefield()' 그럼 Open with ('filename', 'rb')'를 내 파일이 이미 File 객체에 있으므로'put '할 수 있습니까? –

+0

forms.filefield()에서 파일 객체 또는 바이트 객체를 제공하는지 확인하십시오. 문자열 유형을 반환하면 바이트 객체로 변환해야합니다. 그렇지 않으면 upload_fileobj가 실패합니다. 문서에 명시 적으로 언급 된 'Fileobj (파일과 같은 객체) - 업로드 할 파일과 같은 객체. 최소한 – mootmoot

+0

안녕하세요.하지만 여전히 UnknownAPIVersionError와 같은 오류가 발생합니다. –