2017-05-16 27 views
0

私はAmazon 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を持っています これはコードです。 = s3.Bucket(バケット** NAME **) 'インポートboto3 ' ' –

+0

boto3.resource( 'S3'、** AWS_ACCESS_KEY_ID **、** AWS_PRIVATE_KEY **) バケット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のフォームオブジェクトからファイルを取っています。 Like ... 'File = forms.filefield()' Open( 'filename'、 'rb')でファイルを既にFileオブジェクトに入れているので、 'with 'をどのように置くことができますか? –

+0

forms.filefield()がファイルオブジェクトかバイトオブジェクトかを確認してください。文字列型を返す場合は、それをバイトオブジェクトに変換する必要があります。そうしないと、upload_fileobjは失敗します。ドキュメントには、この 'Fileobj(ファイルのようなオブジェクト) - アップロードするファイルのようなオブジェクトが明示されています。 – mootmoot

+0

こんにちは、それでもUnknownAPIVersionErrorと同じエラーが発生しました。 –

関連する問題