首页 > 解决方案 > 使用无头浏览器的 Lambda 函数出现网络错误

问题描述

我正在尝试在 AWS Lambda 上测试一个函数。该函数通过 Puppeteer 打开一个无头版本的 Chromium。浏览器被打开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

我的日志中没有显示其他错误,它只是停止,没有其他信息。知道什么可能导致这种情况吗?

标签: node.jsamazon-web-serviceslambdaamazon-dynamodbserverless

解决方案


推荐阅读