AWS API Gateway Доступ к частной подсети

В моем VPC есть общедоступные и частные подсети. У меня есть некоторые службы, работающие на EC2 в подсети Pvt, к которым должен быть доступ через внешние / мобильные ресурсы. Как мне это сделать - VPCLink и NLB - способ сделать это, или любой другой способ создать точку доступа в публичной подсети (??). Кажется, что Lambda является ответом (сейчас почти для всего в AWS) - не знаю даже, как этот доступ работает для ресурсов в Pvt Subnet.

Также та же подсеть Pvt имеет доступ к внешним ресурсам (за пределами AWS) - как мне это сделать с помощью API Gateway?

Не совсем понимаю, как API-шлюз (и Lambda) расположен по отношению к VPC и подсетям и как функционирует контроль доступа к сети - могут ли они напрямую обращаться к подсетям Pvt или нет. В документации об этом несколько умалчивается, говорится только о IAM - если кто-то может это объяснить. Нашел это на Lambda: AWS Lambda: Как настроить шлюз NAT для лямбда-функции с доступом VPC.

документация говорит: «API Gateway позволяет безопасно подключать ... общедоступный веб-сервисы, размещенные внутри или за пределами AWS». Полагаю, мои ресурсы в подсети Pvt не являются общедоступными.

Спасибо

вы можете заставить его работать? Я предполагаю, что вы пытаетесь создать общедоступный API с помощью шлюза, который обращается к частному API, размещенному на экземпляре EC2 в частном VPC?

LP13 10.01.2019 18:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
1
9 085
2

Ответы 2

Предлагают ли службы, запущенные на EC2, API? API Gateway предназначен для прокси-запросов API. Обычно он используется вместе с Lambda, чтобы позволить функциям Lambda обрабатывать HTTP-запросы. Для вашей службы API-шлюз не требуется. Вы можете просто использовать Application Load Balancer (ALB) или Elastic Load Balancer (ELB). Они могут находиться в общедоступной подсети, в то время как ваша служба остается в частной подсети. Вы можете использовать группы безопасности и таблицы маршрутизации VPC, чтобы разрешить обмен данными из общедоступного ALB / ELB с вашей частной службой EC2.

Бен - да, я могу представить сервис как «API» или REST API. Я бы предпочел использовать API-шлюз для управления доступом и т. д. Итак, вы говорите, что единственный способ предоставить эти «частные» службы - через общедоступный ALB, и в противном случае API-шлюз не сможет получить к ним доступ. Итак, с внешней стороны мой Pvt EC2 не может напрямую получить доступ к шлюзу API, если я не использую NAT или что-то в этом роде? Мне совершенно непонятно, как работает VPC Link - или станет ли он применимым в этом сценарии, по крайней мере, на входящей стороне (?).

Sam-T 28.11.2018 03:37

Когда вы создаете API в API Gateway, он будет общедоступным. Вы можете установить конечную точку в шлюзе API на свой EC2 в частной подсети. ELB не требуется, если вам не нужна избыточность или требуется более одного экземпляра.

Ben Whaley 28.11.2018 03:50

Итак, когда моя «частная» конечная точка становится общедоступной через API-шлюз, возможно, это решит мою проблему на стороне I / B. На самом деле у меня есть ALB, передающий мои услуги в подсети Pvt, который заботится о резервировании и т. д. Должен ли этот ALB быть общедоступным? Итак, что мне нужно сделать для Outbound - применима ли та же логика.

Sam-T 28.11.2018 04:08

ALB может быть частным, и шлюз API сможет принимать входящий трафик и направлять его на ваш ALB. Если вашей службе API требуется исходящий доступ (вы уверены, что это так?), Подключите шлюз NAT к вашей частной подсети и настройте маршрут, чтобы ваш экземпляр EC2 мог подключиться к Интернету. Если ваша служба должна только отвечать на запросы и не требует доступа в Интернет по какой-либо другой причине, вам, возможно, не нужно этого делать. Кроме того, вы можете найти этот пост в блоге полезным: aws.amazon.com/blogs/compute/…

Ben Whaley 28.11.2018 04:31

Бен - очень хорошая ссылка, прояснил почти все. Так что для входящего трафика мне, по сути, ничего не нужно делать - API-шлюз поддерживает интеграцию конечных точек с частными VPC. Мой исходящий сценарий - это то, что моим экземплярам Pvt требуется доступ к службам, размещенным на внешнем сервере (а не к ответу) - для этого я могу использовать / создавать конечные точки VPC интерфейса AWS PrivateLink для шлюза API и получать доступ к этим службам (?)

Sam-T 28.11.2018 06:39

С помощью Бена вот ответ Представляем частные конечные точки Amazon API Gateway

Входящий: Доступ к службам, размещенным в частной подсети, через API-шлюз

Интеграция конечных точек внутри частного VPC. Благодаря этой возможности теперь вы можете сделать свой бэкэнд, работающий на EC2, частным внутри вашего VPC без необходимости в общедоступном IP-адресе или балансировщике нагрузки.

Таким образом, API-шлюз может получить доступ к опубликованным конечным точкам, даже в частных подсетях.

OutBound: Доступ к внешним службам из частной подсети через API-шлюз

Частные конечные точки шлюза API становятся возможными через конечные точки VPC интерфейса AWS PrivateLink. Конечные точки интерфейса работают, создавая эластичные сетевые интерфейсы в подсетях, которые вы определяете в своем VPC. Затем эти сетевые интерфейсы предоставляют доступ к сервисам, работающим в других VPC, или к сервисам AWS, таким как API Gateway. При настройке конечных точек интерфейса вы указываете, какой служебный трафик должен проходить через них. При использовании частного DNS весь трафик к этой службе направляется в конечную точку интерфейса, а не через маршрут по умолчанию, например через шлюз NAT или общедоступный IP-адрес.

Так что вам просто нужно создать конечную точку VPC в подсети Pvtдля API Gateway. VPC End Point- API Gateway

К сожалению, все еще можно обойти аутентификацию шлюза API из чего-либо еще, что работает в VPC, поскольку нет возможности использовать группу безопасности для ограничения доступа только API-шлюзом.

Adrian Baker 23.05.2019 01:19

Другие вопросы по теме