Как настроить шлюз API для общения с частным NLB? - PullRequest
0 голосов
/ 04 сентября 2018

Я использовал ALB, пока не понял, что не могу подключить частный ALB к шлюзу API ... поэтому сейчас пытаюсь NLB.

Пока у меня есть

  • Частный НЛБ
  • API Gateway VPC Link для подключения к NLB

Но я не уверен, как правильно настроить шлюз API. Я сделал:

  • Создан тестовый маршрут GET /test
  • Использовать VPC Link, пробные прокси и непрокси типы
  • Но я не уверен в том, что я могу указать для URL-адреса конечной точки. На данный момент я сделал что-то вроде: http://dummydomain.com/api, где dummydomain.com - фиктивный домен, а /api - мой URL проверки статуса, который должен работать

Это моя первая попытка NLB. Я что-то пропустил?

В настоящее время, когда я тестирую свою функцию шлюза API: я получаю HTTP500

{
  "message": "Internal server error"
}

Логи:

Execution log for request 2d5e2e51-b04c-11e8-b9fe-97b354c20146
Tue Sep 04 14:09:45 UTC 2018 : Starting execution for request: 2d5e2e51-b04c-11e8-b9fe-97b354c20146
Tue Sep 04 14:09:45 UTC 2018 : HTTP Method: GET, Resource Path: /test
Tue Sep 04 14:09:45 UTC 2018 : Method request path: {}
Tue Sep 04 14:09:45 UTC 2018 : Method request query string: {}
Tue Sep 04 14:09:45 UTC 2018 : Method request headers: {}
Tue Sep 04 14:09:45 UTC 2018 : Method request body before transformations: 
Tue Sep 04 14:09:45 UTC 2018 : Endpoint request URI: http://dummydomain.com/api
Tue Sep 04 14:09:45 UTC 2018 : Endpoint request headers: {x-amzn-apigateway-api-id=4p76zcriuk, User-Agent=AmazonAPIGateway_4p76zcriuk, Host=dummydomain.com}
Tue Sep 04 14:09:45 UTC 2018 : Endpoint request body after transformations: 
Tue Sep 04 14:09:45 UTC 2018 : Sending request to http://dummydomain.com/api
Tue Sep 04 14:09:56 UTC 2018 : Execution failed due to configuration error: There was an internal error while executing your request
Tue Sep 04 14:09:56 UTC 2018 : Method completed with status: 500

Что-то, что мне интересно ... у целевой группы

  • Протокол: TCP
  • Порт: 80
  • Тип цели: IP
  • Healthcheck проходит

Но мое приложение работает на порту 3000. Но Healthchecks проходит, это также правильно отражает мое приложение работает на порту 3000

enter image description here

Но интересно, если часть 80 порта является проблемой? NLB переводит трафик порта 80 в порт 3000?

1 Ответ

0 голосов
/ 03 октября 2018

URL-адрес конечной точки немного взломан. Это заставляет вас предоставлять домен (вы можете использовать любой домен). Когда вы делаете запрос, кажется, что этот домен удален и заменен вашей ссылкой VPC.

* 1003 Е.Г. *

http://dummydomain.com/api -> http://{NLB DNS}:80/api

Вы также можете использовать {proxy} как часть URL-адреса конечной точки вместе с прокси-ресурсами API Gateway.

например. http://dummydomain.com/api/{proxy} с прокси-ресурсом верхнего уровня приведет к:

{api gateway endpoint}/todo/1 -> http://{NLB DNS}:80/api/todo/1

Вы можете настроить порт NLB как часть URL-адреса конечной точки.

например.

http://dummydomain.com:10001/api -> http://{NLB DNS}:10001/api

Это позволяет вам включать в свой NLB несколько слушателей, указывающих на разные целевые группы.

Для устранения неполадок протестируйте свой (внутренний) NLB, раскрутив экземпляр EC2 на том же VPC и свернув оттуда URL-адреса своих конечных точек (заменив http://dummydomain.com на DNS NLB)

...