Я пытаюсь увидеть, как получить доступ к заголовкам запроса и значениям тела из с помощью лямбда-кода. Если тело запроса находится в формате JSON, оно автоматически, по-видимому, анализируется и становится доступным в объекте события.
Как я могу получить доступ к полной строке запроса, телу запроса, заголовкам запроса (куки) для любого типа входящего запроса "Content-Type" внутри Lambda?
Ниже перечислены данные, которые я собрал, чтобы помочь решить вопрос, который может быть или не быть релевантным. Пожалуйста, проигнорируйте их, если хотите.
EDIT:
Я рассмотрел существующие вопросы по SE здесь и здесь.
В соответствии с этим thread использование $input.json('$')
должно сделать трюк. Я полагаю, что ответы на эти выше ссылки уже устарели, поскольку шлюз API по умолчанию, по-видимому, распознает JSON в запросе, и если это делает его доступным в объекте event
без настройки шаблонов сопоставления.
Настройка отображения, как было предложено, не работает для меня. Он не содержит информацию заголовка запроса.
Вот скриншоты о том, как он настроен.
Ключ "заголовки" возвращает пустое значение. Использование ошибок $input.params('$')
или "$input.params('$')"
.
ИЗМЕНИТЬ 2
Пробовал определять заголовки в запросе метода. Все еще не получает значение User-Agent внутри lambda.
ИЗМЕНИТЬ 3
Я использовал следующее сопоставление шаблонов в шлюзе API
{
"request": $input.json('$'),
"headers": "$input.params()"
}
и ниже код в lambda
context.succeed("event.key32:"+JSON.stringify(event, null, 2) );
И ответ, созданный шлюзом API, показывает это
Рассматривая значение "заголовков" в ответе, похоже, что шлюзы AWS-SDK/API/облачные полосы удаляются из всех заголовков, полученных от HTTP-клиента? Вот полный текст из JSON, возвращаемый заголовком $input.params().
header={CloudFront-Forwarded-Proto=https, CloudFront-Is-Desktop-Viewer=true, CloudFront-Is-Mobile-Viewer=false, CloudFront-Is-SmartTV-Viewer=false, CloudFront-Is-Tablet-Viewer=false, Content-Type=application/json, Via=1.1 5d53b9570d94ce920abbd471.cloudfront.net (CloudFront), 1.1 95eea7baa7ec95c9a41eca9e3ab7.cloudfront.net (CloudFront), X-Amz-Cf-Id=GBqmObLRy6Iem9bJbVPrrW1K3YoWRDyAaMpv-UkshfCsHAA==, X-Forwarded-For=172.35.96.199, 51.139.183.101, X-Forwarded-Port=443, X-Forwarded-Proto=https}}
В заголовке нет строки User-Agent, хотя, как показано выше, снимок экрана был отправлен клиентом REST. Интересно, что вся строка запроса доступна. Не уверен, что это предназначен для доступа к нему.