На AWS у меня есть настройка API Gateway, которая вызывает лямбда-функцию, которая, в свою очередь, обращается к базе данных Redshift. Все эти сервисы находятся в пределах одного VPC и работают. Единственная проблема заключается в том, что каждый вызов API занимает минимум 10 секунд только для раскрутки лямбда-функции внутри VPC.

Из того, что я прочитал, если мы переместим функцию Lambda за пределы VPC, она сможет избежать 10-секундного запуска. Тем не менее, все еще возможно подключиться к db красного смещения в этой точке? БД redshift является общедоступной, но нужна ли лямбда-функция VPC для доступа к базе данных db в Интернете / публичной сети?

0
DranoMax 17 Апр 2019 в 01:55

2 ответа

Лучший ответ

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

Короче говоря: убедитесь, что ваш ddshift db имеет публичный доступ в Интернет.

0
DranoMax 18 Апр 2019 в 16:31

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

Есть такой вызов, как «Холодный старт / теплый вызов с AWS Lambda», время, когда происходит инициализация. Для инициализации требуется сборка загрузки кода, сборка контейнера, инициализация контейнера и в конечном итоге выполнение кода.

Это хорошо объяснено здесь.

https://blog.octo.com/en/cold-start-warm-start-with-aws-lambda/

«Время инициализации лямбды представляет значительную часть общего времени. После холодного старта лямбда будет оставаться в инстанции некоторое время (5 минут), позволяя любому другому вызову не ждать, пока эта инициализация будет выполняться каждый раз « .

Что касается вашего второго вопроса, следует ли вы помещать лямбду наружу, поэтому лучшая практика подсказывает, что «не помещайте лямбду в VPC, если в этом нет необходимости».

https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html

1
Red Boy 17 Апр 2019 в 09:34