В моем 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 не являются общедоступными.
Спасибо





Предлагают ли службы, запущенные на 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 - или станет ли он применимым в этом сценарии, по крайней мере, на входящей стороне (?).
Когда вы создаете API в API Gateway, он будет общедоступным. Вы можете установить конечную точку в шлюзе API на свой EC2 в частной подсети. ELB не требуется, если вам не нужна избыточность или требуется более одного экземпляра.
Итак, когда моя «частная» конечная точка становится общедоступной через API-шлюз, возможно, это решит мою проблему на стороне I / B. На самом деле у меня есть ALB, передающий мои услуги в подсети Pvt, который заботится о резервировании и т. д. Должен ли этот ALB быть общедоступным? Итак, что мне нужно сделать для Outbound - применима ли та же логика.
ALB может быть частным, и шлюз API сможет принимать входящий трафик и направлять его на ваш ALB. Если вашей службе API требуется исходящий доступ (вы уверены, что это так?), Подключите шлюз NAT к вашей частной подсети и настройте маршрут, чтобы ваш экземпляр EC2 мог подключиться к Интернету. Если ваша служба должна только отвечать на запросы и не требует доступа в Интернет по какой-либо другой причине, вам, возможно, не нужно этого делать. Кроме того, вы можете найти этот пост в блоге полезным: aws.amazon.com/blogs/compute/…
Бен - очень хорошая ссылка, прояснил почти все. Так что для входящего трафика мне, по сути, ничего не нужно делать - API-шлюз поддерживает интеграцию конечных точек с частными VPC. Мой исходящий сценарий - это то, что моим экземплярам Pvt требуется доступ к службам, размещенным на внешнем сервере (а не к ответу) - для этого я могу использовать / создавать конечные точки VPC интерфейса AWS PrivateLink для шлюза API и получать доступ к этим службам (?)
С помощью Бена вот ответ Представляем частные конечные точки 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.

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