Ich habe die Anforderung, ein PNG von einer Amazon Lambda Java-Funktion an eine Amazon Rest API zurückzugeben. Ich habe die Funktion mit einem Funktionsprototyp wie folgt aufgebaut:Amazon Lambda Java-Funktion, die PNG an das API-Gateway zurückgibt
public static void generatePng(InputStream request, OutputStream response, Context context)
Die Anfrage Input Details die Informationen, die in das Bild geschrieben werden muss. Die OutputStream-Antwort wird zurückgegeben und ist ein PNG-Bild. Ich habe den Code getestet und weiß, dass das in den Ausgabestream codierte Bild korrekt ist, da mein Test dies in eine Datei schreibt, die ich in einem Bildeditor sehen kann.
Das Problem, das ich habe, ist in der Verdrahtung der Antwort von der Lambda-Funktion auf das API-Gateway. Die Dokumente sprechen ausschließlich von einer String-Antwort, aber meine Antwort-Payload sind binäre Bilddaten.
Im Lambda Integration Antwort habe ich versucht, Header-Zuordnungen der Zugabe:
Content-Length integration.response.header.Content-Länge
Content-Type integration.response.header.Content-Typ
und ein body mapping von: content-type: image/png mit einer Vorlage von $ input.body
Ich habe auch ein Antwortmodell von image/png im Abschnitt Method Response hinzugefügt.
auf die API testen, die Antwort auf den API-Aufruf zeigt nicht das Bild aber sondern ein String-Dump des Bildes mit dem richtigen png Header Start:
zB: Antwort Körper
?PNG
IHDR?
??~LIDATx? ...
die Antwort-Header zeigen: { "Content-Type": "image/png"}
weiß jemand, wie Amazon API-Gateway zu konfigurieren, um ein Bild als Ausgabe eines Lambda-Funktion Anruf entgegen nehmen und es dem Anrufer richtig zurückgeben?
API Gateway unterstützt derzeit keine binären Daten: https://forums.aws.amazon.com/thread.jspa?threadID=195218 –
Am Ende habe ich Base64 das Bild codiert und antwortete mit einer JSon Nutzlast der PNG als ein Base64-kodiertes Bild. – theINtoy
Sie können auch das generierte PNG nach S3 hochladen und Ihr Lambda über das API-Gateway eine 302-Umleitung zum Image zurückgeben lassen. Ein ähnliches Problem wurde gelöst. – Theodor