2016-10-14 13 views
0

Ich habe eine kleine App erstellt, die eine Datei von einem AWS S3 herunterladen soll.AWS S3-Download-Datei von Flask

kann ich die Daten richtig auf diese Weise herunterladen:

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

aber wenn ich diese Funktion in einem Kolben Route hinzufügen funktioniert es nicht mehr. Ich erhalte diesen Fehler:

ClientError: Ein Fehler ist aufgetreten (400), wenn der HeadObject Betrieb Aufruf: Bad Request

ich nicht in der Lage bin, um herauszufinden, warum sie nicht in der Route nicht funktionieren. Irgendeine Idee?

Antwort

1

Das hängt mit Ihrer AWS-Region zusammen. Erwähnen Sie den Namen der Region als zusätzlichen Parameter.

Versuchen Sie es auf Ihrem lokalen Rechner,

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

Verwendung Wenn Sie in der Lage sind, die Datei mit diesem Befehl zum Download, dann sollte es auch von Ihrem API funktioniert.

+0

Ich habe versucht, die Region in s3_client = boto3.resource ('s3', region_name = 'eu-central-1') und jetzt bekomme ich als Fehler ein 403. – Thomas

+0

Ich sah Ihre Antwort oben. Das war ein unerwarteter Fehler: P – FallAndLearn

0

Das Problem war, dass mit Flasche ich s3_client als globale Variable statt nur innerhalb der Funktion deklarieren musste.

Jetzt funktioniert es perfekt!