Question Mappage de la sortie Lambda à l'en-tête API Gateway


J'essaie de mapper la sortie JSON d'une fonction Lambda à l'en-tête d'un appel API Gateway. Comme exemple ici, nous pouvons envisager un scénario de redirection. Donc, je voudrais ajouter un Location en-tête à la réponse de mon appel API Gateway.

Sortie JSON de la fonction Lambda:

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

Dans "Method Response" -> "Response Headers", je peux ajouter le Location en-tête au code d'état HTTP souhaité.

Ensuite, dans "Integration Response" -> "Header Mappings", je peux ajouter le mappage du Location en-tête à être quelque chose.

Maintenant, ma question est ce que cela devrait quelque chose être?

Note: j'ai essayé integration.response.header.Location, ou en utilisant "Modèles de cartographie" mais pas de chance jusqu'à présent.

Il est possible que ce ne soit pas possible pour le moment (https://forums.aws.amazon.com/thread.jspa?messageID=651482), mais depuis que API Gateway / Lambda évolue si rapidement en ce moment, je le demande quand même.


19
2017-07-30 12:29


origine


Réponses:


Depuis le forum des développeurs AWS (25 septembre 2015), ce n'est pas encore possible, mais il se peut que cela arrive à l'avenir:

Actuellement, API Gateway ne prend pas en charge le mappage du corps de réponse d'intégration avec les en-têtes de réponse, mais nous envisageons d'y ajouter un support à l'avenir.

Message du forum ici

Modifier décembre 2015: Fonctionnalité ajoutée en fonction d'une publication par un employé AWS dans le thread lié ci-dessus. Grâce à Peter Fox pour le signaler.


4
2017-09-25 09:37



A partir d'aujourd'hui (janvier 2016), cela fonctionne simplement en spécifiant integration.response.body.Location dans ton cas.


10
2018-01-18 11:46



Aujourd'hui (12 novembre 2015), je cherchais comment transmettre l'en-tête Location de mon API backend à un en-tête Location dans une réponse d'intégration.

Cette configuration a fonctionné et j'ai pu obtenir un en-tête Location à partir de l'API backend:

enter image description here

On dirait que la solution proposée par Tobias est possible actuellement. Cependant, l'en-tête Location pointe vers l'API principale et ce n'est pas ce que nous voulons. Je vais essayer de trouver une solution pour cela et la poster ici.


6
2017-11-12 16:53



En fait, il semble que vous puissiez accéder à tous les en-têtes fournis par la réponse d'origine (si elle contient un Type de contenu, alors vous pouvez taper: integration.response.header.Content-type). Cependant, je n'ai trouvé aucun moyen d'ajouter un nouvel en-tête (sauf statiquement).


1
2017-07-30 20:28