2016-10-14 21 views
0

AWS S3からファイルをダウンロードする小さなアプリケーションを作成しました。FlaskからAWS S3ダウンロードファイル

私は、このように正しくデータをダウンロードすることができます

s3_client = boto3.resource('s3') 
req = s3_client.meta.client.download_file(bucket, ob_key, dest) 

を私はフラスコルートでこの機能を追加する場合、それはもう動作しません。私はこのエラーを取得:

ClientError:エラーが発生した(400)HeadObject操作を呼び出すとき:私はそれがルート内で動作しない理由を把握することはできませんよ不正な要求

を。何か案が?

答えて

1

これはAWSの地域に関連しています。追加されたパラメータとして地域名を挙げてください。

aws s3 cp s3://bucket-name/file.png file.png --region us-east-1 

を使用して、ローカルマシン上でそれを試してみてくださいあなたは、このコマンドを使用してファイルをダウンロードすることができるならば、それはまたあなたのAPIから正常に動作する必要があります。

+0

s3_client = boto3.resource( 's3'、region_name = 'eu-central-1')で領域を指定しようとしましたが、今は403というエラーが発生します。 – Thomas

+0

上記の答えを見ました。それは予期しないエラーでした:P – FallAndLearn

0

フラスコでは、s3_clientを関数の内部ではなくグローバル変数として宣言する必要がありました。

これは完全に機能します。

関連する問題