Run Google Chrome Lighthouse on AWS Lambda.
npm install lighthouse-lambda-node12Run Google Chrome Lighthouse on AWS Lambda.
#
``bash`
$ npm install lighthouse-lambda-node12 --save
`js
// index.js
const createLighthouse = require('lighthouse-lambda-node12')
exports.handler = function (event, context, callback) {
Promise.resolve()
.then(() => createLighthouse('https://example.com', { logLevel: 'info' }))
.then(({ chrome, results }) => {
// Do something with results`
return chrome.kill().then(() => callback(null))
})
.catch((error) => {
// Handle errors when running Lighthouse
return chrome.kill().then(() => callback(error))
})
// Handle other errors
.catch(callback)
}
You can use docker-lambda to test your Lambda function locally.
`bash`
$ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler
You can use docker-lambda to install dependencies and pack your Lambda function.
`bash
$ docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x bash -c "rm -rf node_modules && npm install"
$ docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x bash -c "rm -f *.zip && zip lambda.zip -r node_modules index.js package.json"
`
- The file will be big (at least 75MB), so you need to upload it to S3 then deploy to Lambda from S3.
- You should allocate at least 512 MB memory and 15 seconds timeout to the function.
Same parameters as Using Lighthouse programmatically.
Returns a Promise of an Object with the following fields:
- chrome: an instance of chromeLauncher.launch(), remember to call chrome.kill() in the end.log
- : an instance of lighthouse-logger (only if you set options.logLevel).
- Version 5.6 lighthouse-lambda uses Headless Chrome from chrome-aws-lambda.lighthouse-lambda` uses the Headless Chrome binary (stable version) from @serverless-chrome/lambda.
- Version 3