Шлюз Amazon HTTP API не работает через VP C Ссылка - PullRequest
1 голос
/ 03 апреля 2020

У меня есть Fargate ECS задача, которая находится под ALB, и все работает нормально. Поскольку этот ALB является внутренним, я хочу показать его через новую HTTP API Gateway через VPC ссылку для HTTP API.

Я создал новую ссылку VPC для HTTP API (указав группа безопасности и подсети для внутреннего ALB), и создали HTTP API Gateway и подключили его к ссылке VPC + ALB.

Я пытаюсь сопоставить указанные c маршруты (и {proxy+} также и в других случаях), но, похоже, я получаю

{
  "message": "Service Unavailable"
}

по правильным ссылкам.

(По несуществующим URLs я получаю 404 - как и ожидалось). Я попробовал это также с inte rnet, обращенным к ALB (подключив его также по ссылке VPC - только для целей тестирования), но, похоже, это снова так.

Я даже протестировал его с NLB со ссылкой HTTP API VPC - и все тот же режим.

Есть идеи, если это вообще работает? (Поскольку он находится в UI, я полагаю, что это так?)

ОБНОВЛЕНИЕ : Кажется, что это работает только на этапе default Для других этапов я создал (dev и бета) за которые я получаю 404.

Мне кажется, что, поскольку URLs для dev и beta составляют /dev и /beta, балансировщик нагрузки «запутывается».

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

HTTP API не выполняют сопоставление URL-адресов, как оригинальные API REST. API Gateway просто передает путь, который он получает в curl / invoke для HTTP API -

Если вы передаете /foo в URL, бэкэнд должен иметь ресурс /foo

Если вы передадите /foo/bar в URL у бэкэнда должен быть ресурс /foo/bar

Для более старых VP C Ссылки вы можете использовать URL для отображения

/foo -> /bar/baz

Это может быть причиной для 404-х.

Что касается 503 Service unavailable, взгляните на журналы доступа ALB и посмотрите, получены ли какие-либо соединения от шлюза API. Скорее всего, запрос перенаправляется по умолчанию вместо любых пользовательских правил ALB, которые вы, возможно, определили. Это приведет к тому, что ваш запрос попадет в неверную целевую группу, что приведет к 503 секундам, если цели не исправны или отсутствуют.

0 голосов
/ 20 апреля 2020

Вы нашли 404, поэтому клиенты достигают YourAPI. Это могут быть просто nginx настройки.

Клиент <--- "https" и fqdn ---> Шлюз API <--- "http" и fqdn ---> YourAPI

nginx в моем окружении ниже,

server {
    listen 80;
    server_name xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com;
}
...