AWS Lambda在执行函数时中途停止

时间:2018-06-12 00:49:15

标签: javascript amazon-web-services aws-lambda puppeteer

我尝试在aws lambda上执行从两个不同文件导入的两个函数:

const tag_test = require("./tag.js");
const login_logout = require("./login_logout.js");

exports.handler = async function(event, context) {
    await tag_test.tag();
    await login_logout.login();
    console.log("all tests done.");
}

第一个函数执行正常,但在运行第二个函数时,lambda在一个点停止并等待整个过程超时。我怀疑它在let browser之前停止,因为在控制台日志中,我可以看到"opening up browser"但不是"got browser"

module.exports.tag = async() => {
    console.log("starting test 2");
    const puppeteer = require('puppeteer-lambda');

    console.log("opening up browser");

    let browser = await puppeteer.getBrowser(
        '--no-sandbox',  
        '--disable-gpu',
        '--single-process'
        );
    console.log("got browser");
    let page = await browser.newPage();
    console.log("got page");

    //my test
    //...

}

有没有人对出了什么问题有任何见解?

2 个答案:

答案 0 :(得分:0)

增加lambda超时。默认为3秒。

答案 1 :(得分:0)

解决。

这实际上是puppeteer-lambda的问题。显然,您无法打开浏览器,关闭它,然后使用puppeteer-lambda在AWS lambda上再次打开它。我在第一次测试中打开并稍后关闭了一个浏览器,这就是我的第二次测试停留在let browser的原因。

为了解决这个问题,我让第一个测试返回浏览器并将其传递给第二个测试以重复使用。