Подтвердить что ты не робот

Отображение вывода Lambda в заголовок API Gateway

Я пытаюсь отобразить вывод JSON из функции Lambda в заголовок вызова шлюза API. В качестве примера здесь мы можем рассмотреть сценарий перенаправления. Поэтому я хотел бы добавить заголовок Location в ответ от моего вызова шлюза API.

Выход JSON из функции лямбда:

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

В "Ответ метода" → "Заголовки ответов" я могу добавить заголовок Location в нужный код состояния HTTP.

Затем в "Integration Response" → "Сопоставление заголовков" я могу добавить отображение заголовка Location как что-то.

Теперь мой вопрос: что это за что-то?

Примечание. Я пробовал integration.response.header.Location или использовал "Шаблоны сопоставления", но пока не повезло.

Есть вероятность, что в данный момент это будет невозможно (https://forums.aws.amazon.com/thread.jspa?messageID=651482), но так как API Gateway/Lambda развиваются так быстро, спросите в любом случае.

4b9b3361

Ответ 1

На форумах разработчиков AWS сегодня (25 сентября 2015 года) это пока невозможно, но может появиться в будущем:

API Gateway в настоящее время не поддерживает сопоставление от тела ответа интеграции к заголовкам ответов, но мы хотим добавить поддержку для этого в будущем.

Сообщение форума здесь

Изменить декабрь 2015. Функция добавлена ​​в соответствии с сообщением сотрудника AWS в упомянутом выше потоке. Благодаря Peter Fox, указав это.

Ответ 2

На сегодняшний день (январь 2016 года) он работает, просто указывая integration.response.body.Location в вашем случае.

Ответ 3

Сегодня (12 ноября, 2015 г.) я искал, как передать заголовок Location из моего backend API в заголовок Location в ответ интеграции.

Эта конфигурация работала, и я мог получить заголовок местоположения из backend api:

введите описание изображения здесь

Похоже, что решение, предлагаемое Тобиасом, возможно в настоящее время. Однако заголовок Location указывает на API бэкэнд, и это не то, что мы хотим. Я попытаюсь найти решение для этого и разместить его здесь.

Ответ 4

На самом деле, похоже, вы можете получить доступ ко всем заголовкам, предоставленным исходным ответом (если он содержит Content-type, то вы можете ввести: integration.response.header.Content -type). Однако я не нашел способа добавить новый заголовок (кроме статического).