2017-02-12 2 views
3

I ein AWS Lambda in Python 2.7 geschaffen, die eine ID empfängt, ruft die Datei von einem s3 bucket und wandelt es in Base64:AWS API-Gateway zurück Binärdatei von Base64 Browser Fehler

response = s3.Object(s3_bucket, r['prefix'] + str(id)).get() 
data = base64.b64encode(response['Body'].read()) 
return data 

alles stimmt Das generierte base64 ist getestet und korrekt. Es ist ein JPEG.

Jetzt auf api Gateway:

  • erstellen API
  • zu Binary Unterstützung binären Medientyp hinzufügen: image/jpeg
  • GET-Methode, um Ressourcen hinzuzufügen.
  • Add-Methode Antwort HTTP Status: 200 Modelle: image/jpeg => Leere
  • hinzufügen Content-Type: = image/jpeg in "Intergration Response" Status 200> "Body Mapping-Vorlagen"

Mit Vorlagen dies:

$util.base64Decode($input.body) 

Deploy API, Test ... und Browser gesagt: das Bild kann nicht angezeigt werden, weil sie Fehler enthält.

Ich versuchte hundert verschiedene Versionen ohne Ergebnis. Was ist mein Fehler?

+0

Es ist nicht klar, warum Sie ein Bild als base64 zurückkehren möchten, aber vorausgesetzt, Sie haben Ihre Gründe, nicht Sie brauchen so etwas wie ein 'Content-Encoding hinzuzufügen: base64' Response-Header, damit der Browser versteht, worum es geht? –

+0

Lambda-Funktion gibt ein Base64-Bild zurück. Ich möchte, dass API-Gateway eine Binärdatei zurückgibt. Dazu benutze ich '$ util.base64Decode ($ input.body)', funktioniert aber nicht gut. – Amedeo

+0

Entschuldigung, ich habe Ihre Frage früher falsch gelesen. –

Antwort

0

Am Ende habe ich herausgefunden, dass Sie dieses Problem derzeit nicht über die Webkonsole lösen können. Wie von daveg vorgeschlagen, müssen Sie die AWS-CLI verwenden, um zur Einstellung contentHandling = CONVERT_TO_TEXT zu wechseln. Bedienung, die, wie gesagt, auf der Weboberfläche nicht möglich ist.

Für weitere Informationen: aws forum thread

Verwandte Themen