From dcec05abfc95986e2bae67511a8ec1030233aa6d Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Thu, 9 Feb 2023 10:47:19 -0500 Subject: [PATCH] Add serverless-with-lambda-layer example --- .gitignore | 1 + .../serverless-with-lambda-layer/index.js | 30 +++++++++++++++++++ .../serverless-with-lambda-layer/package.json | 21 +++++++++++++ .../serverless.yml | 19 ++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 examples/serverless-with-lambda-layer/index.js create mode 100644 examples/serverless-with-lambda-layer/package.json create mode 100644 examples/serverless-with-lambda-layer/serverless.yml diff --git a/.gitignore b/.gitignore index d021f3d..4c04346 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ _/amazon/.aws-sam *.tar *.tgz examples/**/package-lock.json +examples/**/.serverless diff --git a/examples/serverless-with-lambda-layer/index.js b/examples/serverless-with-lambda-layer/index.js new file mode 100644 index 0000000..c246b67 --- /dev/null +++ b/examples/serverless-with-lambda-layer/index.js @@ -0,0 +1,30 @@ +const puppeteer = require("puppeteer-core"); +const chromium = require('@sparticuz/chromium'); + +module.exports = { + handler: async () => { + try { + const browser = await puppeteer.launch({ + args: chromium.args, + defaultViewport: chromium.defaultViewport, + executablePath: await chromium.executablePath(), + headless: chromium.headless, + ignoreHTTPSErrors: true, + }); + + const page = await browser.newPage(); + + await page.goto("https://www.example.com", { waitUntil: "networkidle0" }); + + console.log("Chromium:", await browser.version()); + console.log("Page Title:", await page.title()); + + await page.close(); + + await browser.close(); + + } catch (error) { + throw new Error(error.message); + } + } +}; diff --git a/examples/serverless-with-lambda-layer/package.json b/examples/serverless-with-lambda-layer/package.json new file mode 100644 index 0000000..b3d109f --- /dev/null +++ b/examples/serverless-with-lambda-layer/package.json @@ -0,0 +1,21 @@ +{ + "name": "serverless-with-lambda-layer", + "version": "0.0.0", + "description": "This package demonstrates using @sparticuz/chromium as a devDependency with a layer that contains the binaries", + "license": "ISC", + "author": { + "name": "Kyle McNally" + }, + "main": "index.js", + "scripts": { + "deploy": "sls deploy", + "test": "sls invoke --function chromium-test --log" + }, + "dependencies": { + "puppeteer-core": "19.6.3" + }, + "devDependencies": { + "@sparticuz/chromium": "110.0.0", + "serverless": "^3.27.0" + } +} diff --git a/examples/serverless-with-lambda-layer/serverless.yml b/examples/serverless-with-lambda-layer/serverless.yml new file mode 100644 index 0000000..f30bcec --- /dev/null +++ b/examples/serverless-with-lambda-layer/serverless.yml @@ -0,0 +1,19 @@ +service: sls-with-layer + +provider: + name: aws + runtime: nodejs18.x + stage: dev + region: us-east-1 + timeout: 300 + +functions: + chromium-test: + handler: index.handler + layers: + - !Ref ChromiumtestLambdaLayer + +layers: + chromiumtest: + package: + artifact: ../../chromium.zip