У нас есть система, которую мы переносим с AWS на Google Cloud. Серверы помещены в контейнеры и развертываются через Kubernetes.
У нас есть интерфейс, выполняющий вызовы api в серверную часть. В большинстве случаев эти вызовы API выполняются успешно.
Время от времени мы видим, что вместо обращения к бэкэнду вызов api завершается ошибкой с ответом 400, при этом для содержимого тела устанавливается общая ошибка Google:
"400. Это ошибка.
Ваш клиент отправил неверный или незаконный запрос. Это все, что мы знаем. "
В наших журналах мы не видим, чтобы запрос попал в серверную часть. Это как будто потерялось внутри Google.
Выполнение одного и того же вызова из командной строки из контейнера внешнего интерфейса или с наших локальных машин работает каждый раз.
Мои вопросы:
i) Кто-нибудь видел что-то подобное и нашел способ решения проблемы?
ii) Как мы можем это отладить?
fyi запрос представляет собой простой GET, который выглядит так: "https://example.com/v1/session/12345?frontend_ip=1.2.3.4%2C+5.6.7.8&req_timestamp=2018-04-19+10%3A46"
Ошибка может означать несколько вещей. Это поможет, если вы сможете поделиться отправляемым вами запросом (без каких-либо конфиденциальных данных).
Кроме того, это может быть случай, когда они представляют собой запросы DELETE или GET с телом к входящему ресурсу (балансировщик нагрузки HTTP (S)).
В случае запросов DELETE с paylaod он работает должным образом, как указано в этом док.
В случае запросов GET с полезной нагрузкой происходит постоянное запрос функции позволить им.