parent
a7320dd0e2
commit
503db13867
|
|
@ -144,6 +144,7 @@ Here are some example projects and help with other services
|
||||||
|
|
||||||
- [Production Dependency](https://github.com/Sparticuz/chromium/tree/master/examples/production-dependency)
|
- [Production Dependency](https://github.com/Sparticuz/chromium/tree/master/examples/production-dependency)
|
||||||
- [Serverless Framework with Lambda Layer](https://github.com/Sparticuz/chromium/tree/master/examples/serverless-with-lambda-layer)
|
- [Serverless Framework with Lambda Layer](https://github.com/Sparticuz/chromium/tree/master/examples/serverless-with-lambda-layer)
|
||||||
|
- [Serverless Framework with Pre-existing Lambda Layer](https://github.com/Sparticuz/chromium/tree/master/examples/serverless-with-preexisting-lambda-layer)
|
||||||
- [Chromium-min](https://github.com/Sparticuz/chromium/tree/master/examples/remote-min-binary)
|
- [Chromium-min](https://github.com/Sparticuz/chromium/tree/master/examples/remote-min-binary)
|
||||||
- AWS SAM _TODO_
|
- AWS SAM _TODO_
|
||||||
- [Webpack](https://github.com/Sparticuz/chromium/issues/24#issuecomment-1343196897)
|
- [Webpack](https://github.com/Sparticuz/chromium/issues/24#issuecomment-1343196897)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
## Upload Lambda layer to AWS
|
||||||
|
|
||||||
|
1. Download the layer zip from Github Releases
|
||||||
|

|
||||||
|
2. Create a S3 bucket, or use a pre-existing bucket, upload the zip, and copy the URL
|
||||||
|

|
||||||
|
3. Create a new layer or use a pre-existing layer. (If using a pre-existing layer, Create a new verion)
|
||||||
|

|
||||||
|
4. Use the S3 file to load into to AWS Lambda Layers
|
||||||
|

|
||||||
|
5. Add the layer to your serverless function
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service: sls-with-preexisting-layer
|
||||||
|
|
||||||
|
provider:
|
||||||
|
name: aws
|
||||||
|
runtime: nodejs18.x
|
||||||
|
stage: dev
|
||||||
|
region: us-east-1
|
||||||
|
timeout: 300
|
||||||
|
|
||||||
|
functions:
|
||||||
|
chromium-test:
|
||||||
|
handler: index.handler
|
||||||
|
layers:
|
||||||
|
- arn:aws:lambda:us-east-1:************:layer:chromium:*
|
||||||
|
```
|
||||||
|
|
||||||
|
# BONUS
|
||||||
|
|
||||||
|
These steps can easily be automated using the following code:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ chromiumVersion="112.0.0"
|
||||||
|
$ bucketName="chromiumUploadBucket"
|
||||||
|
$ wget "https://github.com/Sparticuz/chromium/releases/download/v${chromiumVersion}/chromium-v${chromiumVersion}-layer.zip"
|
||||||
|
$ aws s3 cp "chromium-v${chromiumVersion}-layer.zip" "s3://${bucketName}/chromiumLayers/chromium-v${chromiumVersion}-layer.zip"
|
||||||
|
$ aws lambda publish-layer-version --layer-name chromium --description "Chromium v${chromiumVersion}" --content "S3Bucket=${bucketName},S3Key=chromiumLayers/chromium-v${chromiumVersion}-layer.zip" --compatible-runtimes nodejs --compatible-architectures x86_64
|
||||||
|
```
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 117 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
|
|
@ -0,0 +1,29 @@
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
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:
|
||||||
|
- arn:aws:lambda:us-east-1:************:layer:chromium:*
|
||||||
Loading…
Reference in New Issue