2017-05-16 5 views
0

Ich versuche, Inhalte auf Amazon S3 zu laden, aber ich bin immer diese Fehlermeldung: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

Wo ist Ihr Code, der diesen Fehler ausgelöst hat? Und was ist deine Boto3-Version? – mootmoot

+0

Hallo Ich habe boto3 = 1.4.4 und botocore = 1.5.46 Dies ist Code. 'Import boto3 ' ' –

+0

boto3.resource ('s3', ** AWS_ACCESS_KEY_ID ** ** AWS_PRIVATE_KEY **) Eimer = s3.Bucket (** VON Bucketnamen **) obj = bucket.Object (** KEY **) obj.upload_fileobj (** DATEIOBJEKT **) ' –

Antwort

0

Der Fehler von Exception ausgelöst auf "DataNotFound" verursacht wird, als im boto3.Session Quellcode. Vielleicht hat der Entwickler nicht bemerkt, dass Leute den Fehler machen, das richtige Objekt NICHT zu übergeben.

If you read the boto3 documentation example, dies ist die richtige Methode zum Hochladen von Daten.

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

Ich nehme Datei von Django Formular Objekt. Wie ... 'Datei = forms.filefield()' Also wie kann ich 'mit öffnen ('Dateiname', 'rb')' wie meine Datei ist bereits im Dateiobjekt. –

+0

Bitte überprüfen Sie, ob forms.filefield() Ihnen ein Dateiobjekt oder ein Byteobjekt gibt. Wenn der String-Typ zurückgegeben wird, müssen Sie ihn in ein Byte-Objekt konvertieren, andernfalls wird upload_fileobj fehlschlagen. Die Dokumentation erwähnt explizit dieses 'Fileobj (ein dateiähnliches Objekt) - Ein dateiähnliches Objekt zum Hochladen. Zumindest muss es die Methode read implementieren und muss Bytes zurückgeben. " – mootmoot

+0

Hallo, ich habe das behoben, aber immer noch den gleichen Fehler von UnknownAPIVersionError –