AWS — требуется шлюз NAT, несмотря на PrivateLink
Контекст:
У меня есть следующая настройка сети (упрощенная) для запуска лямбды в VPC:
- Общедоступная подсеть с IGW и NAT
- Частная подсеть, в которой выполняется моя лямбда
- Конечная точка S3 VPC для доступа к корзине S3
Я могу выполнить лямбду в своем VPC и наблюдать за правильным поведением. Я могу получить доступ к общедоступному Интернету, и звонки выполняются с помощью EIP моего NAT.
Я использую лямбду для вызова Snowflake DWH и могу правильно внести в белый список свои лямбда-IP-адреса.
Теперь я настроил PrivateLink между моим VPC и Snowflake VPC. Различные отдельные шаги (настройка интерфейса VPC, Hosted Zone, CNAMES) работают.
Если я выполняю вызовы с выделенным URL-адресом PrivateLink через мою Lambda, я правильно вижу вызовы, выполняемые из диапазона IP-адресов CIDR моего VPC.
Проблема:
Похоже, что NAT все же нужен для работы лямбды. Если я удалю его, лямбда начнет тайм-аут. Я не понимаю почему. У меня нет общедоступных интернет-вызовов, выполняемых моей лямбдой. Только вызов Snowflake и S3, у которых теперь настроены конечные точки VPC. Как уже упоминалось, я вижу, что звонки выполняются из ожидаемых диапазонов IP-адресов.
Я предполагал (подкрепленный документацией и общим обоснованием использования PrivateLink), что NAT больше не нужен после успешного установления PrivateLink между VPC.
Вопрос:
Кто-нибудь может подтвердить: NAT больше не нужен? Может ли кто-нибудь предложить гипотезу, почему в моем случае это может работать не так, как ожидалось?
Я просмотрел рекомендации по настройке несколько раз, и все, кажется, сделано правильно. Как уже упоминалось, кажется, что вызов идет по правильному маршруту, но мне все же хотелось бы понять, почему поведение NAT отличается от ожидаемого.