Подключение AWS Api Gateway и частного ALB
У меня есть задача настроить API-шлюз для маршрутизации трафика в Lambda или в балансировщик нагрузки (внутренний, под VPC). Я думал, что можно будет создать простую интеграцию для ALB, используя простую интеграцию HTTP или сервис AWS. Но после некоторого времени поиска в Google я нашел только одно решение - настроить NLB, а затем использовать интеграцию VPC_Link. В этом случае все выглядит как работает.
Но все же я нашел несколько статей, подобных этой, где люди описывают, как они могут интегрировать Api Gateway и LB без VPC_links. В моем случае я всегда вижу invalid endpoint address
ошибка при интеграции моего внутреннего ALB с моим apigateway. Я полагаю, что это работает только для общественных ресурсов (интернет, стоящий перед LBs)?
И вторая часть вопроса. Когда я настроил VPC_link, мне все еще нужно предоставить некоторую конечную точку в интеграции для проверки сертификатов и что-то еще. Но похоже, что эта конечная точка все еще должна быть общедоступной? Проблема в том, что мой сервис под ALB имеет несколько конечных точек, и мне нужно указать путь к этим конечным точкам в этом Endpoint URL
и эта конечная точка должна быть публичной, как я вижу сейчас. Поэтому для целей тестирования я указал URL нашего публичного ресурса и путь к конечной точке, который мне нужно выполнить. И это работает, но выглядит слишком уродливо для меня. Может быть, есть какое-то красивое решение.
3 ответа
Ответ, помеченный как правильный, устарел. Теперь можно интегрировать API Gateway с внутренним ALB через частную интеграцию HTTP с использованием VPC Link. См. /questions/57499336/kak-integrirovat-api-gateway-s-vnutrennim-alb/57508991#57508991 для пошаговой настройки.
Первая часть была принята, поэтому я хотел бы больше сосредоточиться на второй части вопроса. Можно распространять Path с модификацией запроса, предоставляемой VPC Link для HTTP.
Маршрут шлюза API вы можете определить как/foo/api/{param}
Затем приступайте к интеграции этого маршрута с предварительно настроенным каналом VPC.
Перейдите к интеграции VPC -> Изменить сопоставление параметров -> Все входящие запросы , затем укажите конфигурацию ниже;
Параметр для изменения :path
| Тип модификации :Overwrite
| Значение :/api/$request.path.param
Обратите внимание, что это одноуровневый подстановочный знак, поэтому/foo/api/bar
собирается проксировать, но/foo/api/bar/xyz
не.
Потенциальное решение состоит в том, чтобы указать Route как/foo/api/{param+}
для поддержки многоуровневого, но я не пробовал, поэтому, пожалуйста, не стесняйтесь протестировать его.
Я тоже боролся с этим. Для REST API вы можете создать ссылку VPC на NLB, но не на ALB (этоinvalid endpoint address
проблема, которую вы видели). Можно подключить HTTP API напрямую к API Gateway (этот выпуск был выпущен около месяца назад - API Gateway предлагает частную интеграцию с AWS ELB и AWS CloudMap как часть выпуска HTTP API GA). Это расстраивает, и я бы хотел, чтобы они добавили поддержку ALB в ссылки VPC для REST API, но сейчас это невозможно.
Что касается второй части вашего вопроса, я не совсем понимаю, что вы подразумеваете под "интеграцией конечных точек", поэтому боюсь, что не могу вам здесь помочь.