Как избежать ошибки конфигурации при использовании AWS API Gateway с VPC Link? - PullRequest
0 голосов
/ 02 июля 2018

Я создал канал VPC, используя сетевой балансировщик нагрузки (NLB) в соответствии с документацией AWS, и подключил его к ресурсу / методу шлюза API. Но при доступе к «Invoke URL» он выдает «Внутренняя ошибка сервера» и отображает эту ошибку во время тестирования: «Ошибка выполнения из-за ошибки конфигурации: при выполнении вашего запроса произошла внутренняя ошибка».

Процедура, которой я следовал:

1) Создан балансировщик сетевой нагрузки:

  • Схема балансировки нагрузки: Внутренняя
  • Протокол балансировки нагрузки / порт: TCP / 80
  • Зона доступности: создан VPC с CIDR "10.0.0.0/16" и общедоступной подсетью с CIDR "1XX.XX.0.0 / 16".
  • Целевая группа: Протокол / Порт / Тип цели - TCP / 80 / Экземпляр
  • Нет целевой регистрации.
  • Запущен NLB.

2) Создано VPC Link в API Gateway с использованием только что созданного NLB.

3) Создан новый API:

  • Метод: Получить
  • Тип интеграции: VPC Link
  • Использовать интеграцию прокси: True
  • VPC Link: $ {stageVariables.vpcLinkId}
  • URL-адрес конечной точки: «URL-адрес моего экземпляра ec2 с портом» (например: http://ec2 -XX-XXX-XXX-XXX.compute-1.amazonaws.com: 3000 )
  • Создан ресурс API.

4) Развернуть выбранный API с помощью действия «Развернуть API» и только что созданного этапа.

5) Настроил «vpcLinkId» в разделе «Переменные этапа».

Теперь, если я нажму "Invoke URL", на веб-странице отобразится "{" message ":" Внутренняя ошибка сервера "}".

Примечание: Если я использую тот же URL-адрес EC2 с «Тип интеграции: HTTP», «Invoke URL» работает. То же самое не работает с VPC Link.

Ошибка:

enter image description here

Другие пункты, которые стоит отметить:

  1. В EC2 экземпляр с политикой безопасности разрешит все порты TCP.
  2. Экземпляр EC2 был запущен с использованием ECS / ECR (Docker Container).
  3. Включены журналы Cloud Watch со стадии API Gateway, но ничего не получается.

Я с радостью предоставлю дополнительную информацию, если потребуется.

РЕДАКТИРОВАТЬ 1

Основываясь на входе JNY (jny), я изменил конечную точку шлюза API на NLB и добавил свой экземпляр EC2 в качестве цели в NLB. Тем не менее, я сталкиваюсь с той же проблемой. Ниже изображения покажут все конфигурации, которые я сделал.

Конфигурация балансировщика нагрузки:

enter image description here

Настройки целевой группы балансировщика нагрузки:

enter image description here

Настройки порта целевой группы:

  1. Здесь я указал 3000 в качестве порта для проверки работоспособности экземпляра, поскольку мое приложение (узел) прослушивает порт 3000.
  2. Включены номера портов 80 и 3000 в политике безопасности.

enter image description here

enter image description here

Настройки шлюза API:

  1. Наконец, я изменил конечную точку шлюза API на NLB

enter image description here

Результат тот же:

enter image description here

И все же я не уверен, какую ошибку я здесь совершаю.

...