RafalWilinski / serverless-puppeteer-layers

Serverless Framework + AWS Lambda Layers + Puppeteer = ❤️
https://dynobase.com
274 stars 36 forks source link
aws-lambda chrome headless layers puppeteer serverless

Serverless Puppeteer using AWS Lambda Layers

Twitter: rafalwilinski

Recently AWS introduced Layers which enables sharing common code between functions and working with large dependencies (such as headless chrome) much easier.

This project example returns a screenshot of page requested via ?address= query parameter.

Demo

Usage

It is very important to tell NPM to skip installing chromium from puppeteer package. To do so, installing dependencies should be done using this command:

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 npm install

or

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 yarn

Without this, your function size would be more than 200MB which is way too much.

After that, you can simply deploy your funciton.

sls deploy

curl <DEPLOYED_ENDPOINT>?address=https://google.com

or apply this ARN to your function directly: arn:aws:lambda:us-east-1:085108115628:layer:chrome:6

Bundling latest Chromium on your own

Prerequisites:

./download-latest.sh

Credits for this solution go to San Kumar

Author

👤 Rafal Wilinski

Show your support

Give a ⭐️ if this project helped you!