2016-09-23 3 views
0

Я пытаюсь подключить существующий API к AWS API Gateway.Предотвратите использование шлюза API AWS от переназначения параметров URL-адреса?

У меня все работает, при этом с помощью графического интерфейса «test» для каждой из моих конечных точек успешно попадает мой сконфигурированный экземпляр EC2.

Я использовал механизм импорта swagger для автоматического сопоставления всех возможных конечных точек и связанных с ними параметров URL.

Я заметил, что когда запрос попадает на мой API (экземпляр EC2), URL-адрес был слегка изменен. Порядок URL-адресов изменился.

Независимо от порядка параметров, который я вставляю в тестовый графический интерфейс, порядок параметров при попадании в мой API был изменен на порядок, указанный на экране «Запрос метода».

Кто-нибудь знает, как предотвратить это?

+1

Есть ли причина, по которой вам требуется определенный порядок ваших параметров? –

+0

Это устаревшее требование API, которое я переношу. Я мог бы изменить исходный код, чтобы удалить эту зависимость, но было бы проще, если бы AWS не изменил параметры URL. – GreensterRox

+0

Вы пробовали использовать новую функцию «http proxy»? Это может упростить ваше определение и решить эту проблему: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-step-by-step.html –

ответ

0

Там нет никакого способа для достижения этой цели с помощью лямбда «пользовательских» выдающей доверенности

Я пытался использовать функцию Lambda в качестве пользовательской выдающей доверенности, которая затем проксите через наш HTTP API. Единственными доступными для пользовательского авторизатора данными являются «токены» в заголовке (можно назвать все, что вы хотите - настроить через API-интерфейс шлюза API). Разумеется, вы можете заполнить все нужными вами значениями, и одно предложение заключалось в том, чтобы поместить этот порядок в этот заголовок, а затем выполнить некоторую логику на этом лямбда-уровне, однако это означало изменение наших API-вызовов, что нежелательно.

У вас есть доступ к «преобразованному» URL (например, «https://df64sxl1.execute-api.us-east-2.amazonaws.com/prod/myEndpoint), но это не очень полезно.

Если вы можете использовать интеграцию лямбда (вместо пользовательской авторизации), вы сможете достичь того, что используете, используя payload-template mappings, поскольку они обеспечивают способ доступа к необработанному запросу.

Смежные вопросы