#rest #https #amazon-cloudfront
Вопрос:
Короткая история: Если я попаду в свою конечную точку /api/что-то с PUT и без тела, оно перейдет к моей Лямбде (через CF — > API GW — > > Лямбда). Если я добавлю тело запроса, он не будет работать и, похоже, умрет до того, как попадет в шлюз API. Я не уверен, почему он это сделал.
Длинная история: я настроил дистрибутив CloudFront, который отправляет запросы в /api на наш шлюз API, а все остальные запросы направляются только на статические ресурсы веб-сайта.
До сих пор он отлично работал для наших простых случаев использования. Ранее мы обращались к шлюзу API только с запросами GET, но теперь нам понадобится отправлять запросы PUT или POST на шлюз API. Мне пришлось обновить «поведение» дистрибутива CloudFront для шаблона пути /api (тот, который идет к шлюзу API), чтобы разрешить все методы HTTP.После этого я смог начать получать ответы от шлюза API для ответов PUT и POST (ранее работал только для GET).
Однако я заметил, что если я попытаюсь отправить полезную нагрузку или тело с запросом (независимо от типа запроса), я не думаю, что он на самом деле попадает в шлюз API или Лямбда-код, к которому направляется шлюз API, потому что я получаю ответ «Вам нужно включить JavaScript для запуска этого приложения». Я попытался просмотреть журналы, но ничего не смог найти. В заголовках отображается «Ошибка с cloudfront», но я не уверен, почему и где найти, в чем была ошибка.
Какие-нибудь советы о том, как устранить эту проблему или в чем может быть проблема?
Обновление (10/8): Я понял, что проблема «включить javascript» возникла из-за моих пользовательских страниц ошибок для ошибок 403 и 404. Я удалил их в своей среде разработки и теперь получаю более четкую ошибку.
«Этот дистрибутив не настроен для разрешения метода HTTP-запроса, который использовался для этого запроса. Дистрибутив поддерживает только доступные запросы. В настоящее время мы не можем подключиться к серверу для этого приложения или веб-сайта. Возможно, слишком большой трафик или ошибка конфигурации. Повторите попытку позже или свяжитесь с владельцем приложения или веб-сайта».
Однако я все еще не знаю, что делать, так как тип запроса (PUT) включен, и запрос работает до тех пор, пока я не предоставлю тело. Не знаю, как в данный момент сделать так, чтобы с телом все было в порядке.