#node.js #amazon-web-services #lambda #amazon-dynamodb #serverless
#node.js #amazon-веб-сервисы #лямбда #amazon-dynamodb #без сервера
Вопрос:
Я пытаюсь протестировать функцию на AWS Lambda. Функция открывает безголовую версию Chromium через Puppeteer. Браузер открывается chrome-aws-lambda
, чтобы избежать загрузки всего браузера. Я развертываю свой Lambda через бессерверный и взаимодействую с таблицей DynamoDB для других целей, если это помогает.
Следующая функция проверяет наличие рекламы в видео YouTube:
async function checkAdsPresence(page, adSelector) {
await delay(10000);
try {
const module = await page.evaluate((adSelector) => {
const adModule = document.querySelector(adSelector);
const adType = adModule.children.length;
const presence = adType > 0;
return presence
}, adClass);
return module
} catch (err) {
return "No ad module"
}
}
Эта функция вызывается повторно и ожидает 10 секунд, как вы можете видеть из функции задержки, которая определяется следующим образом.
function delay(time) {
return new Promise(function (resolve) {
setTimeout(resolve, time);
});
}
Но после вызова функции несколько раз, примерно 4 (так 40 секунд в видео), на панели Lambda отображается следующая ошибка.
Calling the invoke API action failed with this message: Network Error
В моих журналах не отображается другая ошибка, она просто останавливается, никакой другой информации. Есть идеи о том, что может вызвать это?
Комментарии:
1. Ваша лямбда-функция находится внутри VPC?
2. @Андре. IDK нет, я развернул свою лямбду через Serverless, я отредактирую, чтобы добавить некоторую информацию
3. @Андре. IDK в моем случае находится в VPC, какое-то предположение?
4. @DouglasOliveira проверьте группу безопасности, связанную с лямбдой, затем таблицы маршрутизации
5. Спасибо @Andre. IDK Я изменил реализацию кода, я думаю, что проблема связана с объемом данных, которые обрабатывала моя лямбда, затем я разделил выполнение на более ограниченные части, вызывая одну и ту же лямбду несколько раз, но с меньшим количеством данных, так что все получилось.