URL-адреса, содержащие специальные символы (`^|`), заблокированные шлюзом api, никогда не попадают в lambda

#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. Большое спасибо: тогда мы обязательно будем кодировать. Спасибо!