#amazon-web-services #aws-lambda #aws-api-gateway
#amazon-web-services #aws-lambda #aws-api-gateway
Вопрос:
Как я могу получать запросы с URL-адресами, содержащими любой из этих специальных символов <>^|
, чтобы они попадали в мою лямбду за шлюзом api и не блокировались на шлюзе api?
Проблема: у нас есть лямбда-код, запускаемый шлюзом api, и лямбда-код нормально отвечает на большинство запросов. Но URL-адрес с определенными специальными символами ( <>^|
) возвращает a 400 bad_request
, никогда не доставляясь в lambda. Когда вместо URL-адреса используется альтернативный URL-код (т. Е. |
Вместо |
), лямбда-код отвечает без проблем.
Сначала наша команда предположила, что запросы, содержащие эти специальные символы, в частности vertical bar ( |
) , блокируются AWS WAF. Но график WAF не регистрирует, что запросы когда-либо выполнялись, что заставляет нас думать, что это может быть проблема с шлюзом api.
Что было опробовано: 10 раз запускал один и тот же запрос curl на развернутом сервере. В девяти из этих случаев использовался специальный символ в конечной точке url, в десятый раз использовался кодированный эквивалент.
Попытка кодирования прошла успешно, и лямбда ответила без проблем. Все девять других попыток завершились неудачей и не отображались ни в консоли AWS, ни в графике WAF.
Помимо информирования наших пользователей о необходимости всегда кодировать эти специальные символы в телах URL как «исправление», мы были бы очень признательны за любую информацию об этой проблеме api gateway. Спасибо.
Ответ №1:
Поддерживаются не все символы. Из документов:
Сегменты пути могут содержать только буквенно-цифровые символы, дефисы, точки, запятые, двоеточия и фигурные скобки. Параметры пути должны быть отдельными сегментами пути.
Комментарии:
1. Большое спасибо: тогда мы обязательно будем кодировать. Спасибо!