Как лямбда подключается к s3 внутри vpc - PullRequest
0 голосов
/ 17 марта 2020

Я не могу различить guish между привилегированным su bnet и publi c su bnet.

Я создал vp c и подключил su bnet и igw также был связан с таблицами маршрутов. Итак, не является ли сеть publi c su bnet?

Как я и ожидал, сеть publi c, похоже, должна взаимодействовать с внешней средой, но связи вообще нет.

Возможно подключение от aws лямбда к RDS (vp c), но происходит тайм-аут как для загрузки файлов в s3, так и для отправки сообщений в slack.

Я видел много сообщения об использовании конечных точек vp c, но когда я пытаюсь настроить его

Warning
When you use an endpoint, the source IP addresses from your instances in your affected subnets for accessing the AWS service in the same region will be private IP addresses, not public IP addresses. Existing connections from your affected subnets to the AWS service that use public IP addresses may be dropped. Ensure that you do n’t have critical tasks running when you create or modify an endpoint.

Так не отключается ли ec2 в настоящее время от s3? Затем возникает проблема со службой, которую нельзя установить.

В конфигурации lambda vp c, даже если открыты все границы группы безопасности, соединение не установлено.

Есть ли способ настроить NAT?

NAT хочет избежать этого из-за его стоимости.

Моя цель - установить связь с rds, s3, lambda на vp c.

.

1 Ответ

1 голос
/ 17 марта 2020

Publi c su bnet в AWS - это su bnet, чья таблица маршрутов имеет маршрут по умолчанию к шлюзу Inte rnet (IGW).

IGW не выполнить NAT, так что если ваш компьютер (экземпляр EC2, функция Lambda или другое) направляет трафик c на IGW, то этот трафик c достигнет целого rnet, если отправляющий экземпляр вычислительного экземпляра имеет опубликованный c IP и этот трафик c будет отброшен, если отправляющий его экземпляр вычислительного компьютера не имеет общедоступного c IP.

Как лямбда-функции, которые вы развертываете в своем VP C, достигают inte rnet ( например, поговорить со Slack или S3)? Они должны направлять через NAT. Как правило, вы развертываете их в частном su bnet, и у этой таблицы маршрутов su bnet есть маршрут по умолчанию к устройству NAT или шлюзу NAT в общедоступной c su bnet.

Почему лямбда-функция, развернутая в паблике c su bnet, не достигает inte rnet? Поскольку в качестве маршрута по умолчанию для publi c su bnet используется IGW, у функции Lambda нет IP-адреса publi c, и IGW отбрасывает весь трафик c с частных IP-адресов. IGW не является NAT.

Как лямбда-функция может достичь S3, не позволяя ей также достичь inte rnet? Вы развертываете функцию Lambda в VP C private su bnet, не предоставляете маршрут по умолчанию от этого su bnet к NAT и настраиваете конечную точку S3 VP C в VP C. , Теперь Lambda может обращаться к S3 в частном порядке.

Как функция Lambda может обращаться к базе данных RDS, которая сама находится в частном su bnet? Вы развертываете функцию Lambda в частном su bnet, настраиваете Lambda с группой безопасности и настраиваете группу безопасности экземпляра RDS, чтобы разрешить входящий трафик c из группы безопасности Lambda.

How ли лямбда-функции, которые не развернуты в VP C, достигают inte rnet? Лямбда-функции не имеют и не могут иметь публичные c IP-адреса, поэтому они должны каким-то образом маршрутизировать через NAT. Но вы не развернули VP C, не говоря уже о NAT, так как он работает? Функция Lambda имеет сетевой интерфейс (ENI), который действительно развернут в VP C, но это не ваш VP C. Это AWS -управляемый VP C и имеет NAT-шлюз.

ОК, вернемся к вашей ситуации. Вы хотите, чтобы ваша лямбда-функция достигала Slack (через inte rnet), S3 (любым возможным способом) и RDS (который находится в частном su bnet вашего VP C). Это сложная комбинация, потому что, хотя мы можем достичь как RDS, так и S3 в частном порядке (через внутреннюю c VP C маршрутизацию к RDS и через конечную точку VP C до S3), мы не можем достичь Slack таким образом. Или мы могли бы достичь и S3, и Slack, если бы мы развернули за пределами VP C (через NAT в AWS -управляемом VP C), но тогда мы не смогли бы получить доступ к частной RDS.

Итак, Я думаю, вам нужно развернуть Lambda в частном su bnet, для которого su bnet нужен маршрут по умолчанию к шлюзу NAT в общедоступном c su bnet, вам нужен IGW, и вам нужно правильно настройте группы безопасности для вашей функции Lambda и экземпляра RDS, чтобы разрешить входящий доступ из Lambda в RDS. S3 traffi c будет маршрутизироваться публично. Или вы можете добавить конечную точку S3 VP C, если вам нужно сохранить траффи S3 c в секрете.

Более полезная полезная информация здесь:

PS если есть вероятность, что вы испортили свой VP C, изменяя таблицы маршрутов или другими способами, тогда я предлагаю удалить этот VP C и использовать мастер AWS console VP C для создания нового.

...