#node.js #amazon-web-services #aws-lambda #aws-api-gateway #serverless
Вопрос:
Я пытаюсь выполнить составной http-запрос через шлюз API к Лямбде. Я установил тип двоичного носителя на «составные/данные формы». Проблема в том, что мне нужно получить доступ к заголовку типа содержимого, чтобы я мог правильно проанализировать текст в своей лямбда-логике.
Но когда я регистрирую событие lambda в консоли, я вижу, что заголовок типа содержимого отсутствует, хотя я вижу, что он хорошо отправлен моим клиентом.
Кроме того, все отлично работает в локальном режиме без сервера-в автономном режиме, без прохождения через шлюз API.
Поэтому я предполагаю, что API Gateway самостоятельно обрабатывает мой запрос и отправляет его другую версию на мой Lambda с другими заголовками.
Как я могу заставить API Gateway передать этот заголовок в мой Lambda ?
Большое спасибо!
Ответ №1:
В запросе на интеграцию попробуйте добавить заголовок HTTP Content-Type
, сопоставленный с application/x-www-form-urlencoded
.
Затем добавьте шаблон сопоставления для multipart/form-data
{
"Content-Type" : "$input.params('Content-Type')",
"body_base64" : "$util.base64Encode($input.body)"
}
Если вы используете шаблон OpenAPI для создания api с использованием terraform или без сервера, настройте x-amazon-apigateway-integration:
узел
requestTemplates:
multipart/form-data: "{n "Content-Type"
: "$input.params('Content-Type')",n "body_base64" : "$util.base64Encode($input.body)"
n}"
passthroughBehavior: "never"
type: "aws"
Комментарии:
1. Знаете ли вы, как это сделать из sdk с бессерверной платформой ?
2. Вы можете добавить его как часть спецификации OpenAPI в yaml