Добавление полного ответа здесь.
Выпуск заголовка
Прежде всего, вам нужно убедиться, что запись заголовка добавлена в Method Request
, а затем вы можете перейти к картечто в Integration Request
с отображением method.request.header.x-api-key
.Ошибка возникает из-за того, что вы не добавили в раздел Method Request
, а пытались настроить его только в Integration Request
.
![enter image description here](https://i.stack.imgur.com/7UjPG.jpg)
Lambda Payload Issue
Похоже, вы не используете Lambda Proxy Integration
.Если вы используете Lambda Proxy Integration, вы получите полные данные о событиях объекта JSON в Lambda.Аналогично ответу в сообщении , которым вы поделились.Этот объект JSON будет содержать заголовки, параметры запроса, переменные пути, URL, тело запроса и т. Д.,.Если вы хотите посмотреть пример того, как это выглядит, просто создайте тестовое событие API Gateway на Lambda.
Теперь, если вы не хотите использовать интеграцию с Lambda Proxy, но хотите ограничить отправляемую информацию.Lambda, вам нужно будет создать шаблон отображения интеграции для отправки в Lambda только необходимой информации, такой как заголовки, полезная нагрузка, параметры запроса и т. Д., Из API Gateway.
Пример шаблона интеграции.
{
"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
}
}
Ссылка -
https://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api-gateway/
https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html