AWS Лямбда внутри ВП C. 504 Время ожидания шлюза (ENI?) - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть бессерверное. net ядро ​​веб-API-лямбда-приложения, развернутое на AWS.

У меня это сидит внутри VP C, когда я получаю доступ к сервису ElasticSearch внутри того же VP C .

У меня есть два API-сервиса, которые подключаются к сервису Elasticsearch.

После периода неиспользования (4 часа, 6 часов, 18 часов - я точно не уверен, но кажется случайным ), функция перестает отвечать, и я получаю ошибку тайм-аута шлюза 504: «Не удается найти конечную точку»

Я где-то читал, что если «простаивать» слишком долго, ENI возвращается в систему AWS и что повторное включение лямбды должно запустить его.

Я не могу "разбудить" функцию, вызвав ее, так как она истекает из-за указанной выше ошибки (я также увеличил время ожидания по умолчанию) ).

Вот кикер - если я внесу какие-либо изменения в указанную c лямбда-функцию и сохраню эти изменения (сюда входит нечто такое простое, как изменение значения тайм-аута) - Мой AP Я звоню (ОБА из них, несмотря на то, что разные лямбды) снова начинают работать, как будто они «вернулись» обратно. Очевидно, изменения делают это, но почему?

Очевидно, что я не хочу тайм-аутов в производственной среде независимо от того, сколько ИЛИ как мало используется лямбда-вызов или вызов API.

Мне нужно пуленепробиваемое решение для этого. Конечно, это проблема конфигурации некоторого описания, но я просто не уверен, где искать.

Я изменил таблицы маршрутов, публичные / частные подсети, блоки CIDR, создал шлюзы inte rnet, NAT et c. для VP C. Это все работает, но эти две лямбды, которым требуется доступ VP C, продолжают как-то "засыпать".

1 Ответ

0 голосов
/ 24 апреля 2020

Это из-за холодного старта лямбды. В reInvent 2019 появилась новая функция, в которой предусмотрен выделенный параллелизм для лямбды (не путайте с зарезервированным параллелизмом).

Убедитесь, что выделенный параллелизм равен минимуму 1 (или величине запросы, обслуживаемые параллельно), чтобы лямбда всегда была горячей и обслуживала запросы

Ссылка: https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/

Чтобы получить больше контекста, Lambda в VP C использует гиперплоскость ENI и функции в одной и той же учетной записи, которые совместно используют одну и ту же группу безопасности: su bnet использует для спаривания одни и те же сетевые интерфейсы.

Если Lambda функционирует в учетной записи go простаивает в течение некоторого времени (обычно не используется для 40 Минут во всех функциях, использующих этот ENI, поскольку я получил эту информацию о времени от поддержки AWS), служба восстановит неиспользуемые ресурсы гиперплоскости, и поэтому очень редко вызываемые функции могут по-прежнему видеть более длительное время холодного запуска.

Ссылка: https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

...