2016-12-12 4 views
0

Я знаю, как настроить API-шлюз и связать его с функцией Lambda. То, что я не знаю, и Бог, которого я искал, - это как получить тело ответа от API Gateway в Лямбде.Получить тело ответа от вызова шлюза API в функции лямбда

Как это получить? Я вижу это, когда тестирую API в консоли AWS.

+0

Вы имеете в виду параметры запроса параметров URL-адреса и/или тела из запроса URL-адреса для доступа к функции лямбда-функции? – Yan

+0

Я хотел бы знать, как это сделать – froinds

ответ

4

Я думаю, вам нужно настроить шаблон отображения тела. Goto шлюз API -> API, который вы создали -> Ресурсы -> Метод (Get/Post ..) -> Интеграция Request -> Body Mapping Template -> Add Mapping Template Тип контента: приложения/JSON

{ 
    "body" : $input.json('$'), 
    "headers": { 
    #foreach($header in $input.params().header.keySet()) 
    "$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end 

    #end 
    }, 
    "method": "$context.httpMethod", 
    "params": { 
    #foreach($param in $input.params().path.keySet()) 
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end 

    #end 
    }, 
    "query": { 
    #foreach($queryParam in $input.params().querystring.keySet()) 
    "$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end 
    #end 
    } 
} 

Вы должны быть в состоянии получить доступ к переменным в Lambda

params.Item = event.query; для доступа к параметрам запроса

Проверьте эти ссылки для получения дополнительной информации http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

https://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api-gateway/

Сообщите мне, если это поможет.

+0

Правильно. Я вижу тело ответа, когда проверяю его. Однако, если я его вызываю извне, я получаю следующее: {«message»: «Forbidden»} – froinds

+0

У вас это работает? Где вы видите сообщение: запрещено в функции лямбда или в ответе в браузере? – Yan

+0

Я вижу это в ответе в браузере – froinds