2015-07-30 8 views
19

Ich versuche, die JSON-Ausgabe von einer Lambda-Funktion auf den Header eines API-Gateway-Aufrufs zuzuordnen. Als Beispiel können wir ein Umleitungsszenario betrachten. Daher möchte ich einen Location Header zu der Antwort von meinem API Gateway-Aufruf hinzufügen.Zuordnung von Lambda-Ausgabe zu API-Gateway-Header

JSON Ausgabe von Lambda-Funktion:

{ 
    Location: 'http://google.com' 
} 

In "Method Response" -> "Antwort-Header" kann ich die Location-Header an den HTTP-Statuscode gewünscht hinzufügen.

Dann in "Integration Response" -> "Header Mappings" Ich kann die Zuordnung für die Location Header zu etwas hinzufügen.

Jetzt ist meine Frage, was sollte das etwas sein?

Hinweis: Ich habe versucht integration.response.header.Location oder "Mapping Templates", aber bisher kein Glück.

Es besteht die Möglichkeit, dass es im Moment nicht möglich ist (https://forums.aws.amazon.com/thread.jspa?messageID=651482), aber da sich API Gateway/Lambda im Moment so schnell entwickeln, werde ich trotzdem fragen.

+0

'Ordnen Sie die Ausgabe Ihrer Lambda-Funktion den Überschriften und dem Ausgabemodell der 200-Methodenantwort zu.'Diese Aussage aus dem Integrationsantwortbildschirm in API Gateway lässt es so aussehen, als ob es möglich sein sollte. Aber nicht herausfinden, wie. – user3526

Antwort

4

Von den AWS Entwickler-Foren heute (25. September 2015) dies noch nicht möglich ist, aber in der Zukunft kommen kann:

API-Gateway zur Zeit keine Abbildung von der Integration Antwort Körpern der Unterstützung Antwortheaders, aber wir suchen Unterstützung in Zukunft.

Forum post here

bearbeiten Dezember 2015: Feature, wie durch einen AWS Mitarbeiter im Thread oben verlinkten nach einem Beitrag hinzugefügt. Danke an Peter Fox für das hinweisend.

1

Eigentlich, so scheint es Sie zu allen Header durch die ursprüngliche Antwort bereitgestellt zugreifen kann (wenn es einen Content-type enthält, können Sie Folgendes eingeben: integration.response.header.Content-Typ). Ich habe jedoch keine Möglichkeit gefunden, einen neuen Header hinzuzufügen (außer statisch).

6

Heute (12. November 2015) suchte ich nach der Übergabe des Headers Location aus meiner Back-End-API an einen Location-Header in der Integrationsantwort.

Diese Konfiguration gearbeitet und ich konnte Location-Header von Back-End-api erhalten: zur Zeit

enter image description here

Sieht aus wie die Lösung von Tobias vorgeschlagen ist möglich. Der Location-Header verweist jedoch auf die Back-End-API, und das ist nicht das, was wir wollen. Ich werde versuchen, eine Lösung dafür zu finden und es hier zu posten.

9

Ab heute (Januar 2016) funktioniert es einfach in Ihrem Fall integration.response.body.Location.