В настоящее время я использую лямбда-функцию, написанную на Javascript, которая настроена с источником событий SQS для автоматического извлечения сообщений из очереди SQS и выполнения некоторой базовой обработки c содержимого сообщения. Я не могу показать код, но сводка выполнения лямбда-функции в основном:
Для каждого сообщения в пакете, которое она получает как часть события:
- Она анализирует тело, которая представляет собой строку JSON в объекте Javascript.
- Она считывает объект из S3, который указан в объекте, используя
getObject
. - . Она помещает запись в Таблица DynamoDB с использованием
put
. - Если ошибок не было, она удаляет отдельное сообщение SQS, которое было обработано из очереди с использованием
deleteMessage
.
Эта очередь SQS высока -объем и получает сообщения в натуральном выражении, регулярно создавая резервы миллионов сообщений. Лямбда обычно может масштабироваться для одновременной обработки сотен тысяч сообщений. Это решение хорошо работало для меня с другими приложениями в прошлом, но теперь я сталкиваюсь со следующей неустойчивой ошибкой, которая надежно начинает появляться при увеличении лямбды:
[ERROR] [#############] LAMBDA_RUNTIME Failed to post handler success response. Http response code: 400.
Я не смог найти любая информация о том, что означает эта ошибка и что ее вызывает. Похоже, что не существует четкой картины, с которой сталкиваются казни. Функция обычно может работать в течение короткого периода, не обнаруживая ошибки и масштабируясь до ожидаемых уровней. Но затем, как вы видите, ошибка начинает появляться довольно внезапно и полностью разрушает пропускную способность Lambda, заставляя ее автоматически уменьшаться:
Кто-нибудь знает, что означает эта ошибка "LAMBDA_RUNTIME" и что может ее вызвать? Время выполнения моей лямбда-функции - Node v12.