Use chrome-aws-lambda for assetImage
Okay cool, this one worked! We use this special Chrome package with AWS Lambda support, and then we use normal Playright in dev, and then we exclude `playwright` from the deployment (even though it got auto-detected by `require("playwright")`) to just barely sneak in under the 50MB limit for this function. Phew! The preview deploys for this seem to be, actually working? So that's exciting!
This commit is contained in:
parent
49abb92c03
commit
adf70dc25f
4 changed files with 55 additions and 18 deletions
|
@ -18,8 +18,6 @@ const beeline = require("honeycomb-beeline")({
|
|||
disableInstrumentationOnLoad: true,
|
||||
});
|
||||
|
||||
const playwright = require("playwright-aws-lambda");
|
||||
|
||||
// To render the image, we load the /internal/assetImage page in the web app,
|
||||
// a simple page specifically designed for this API endpoint!
|
||||
const ASSET_IMAGE_PAGE_BASE_URL = process.env.VERCEL_URL
|
||||
|
@ -36,7 +34,20 @@ const ASSET_IMAGE_PAGE_BASE_URL = process.env.VERCEL_URL
|
|||
let BROWSER;
|
||||
async function getBrowser() {
|
||||
if (!BROWSER) {
|
||||
BROWSER = await playwright.launchChromium({ headless: true });
|
||||
if (process.env["NODE_ENV"] === "production") {
|
||||
// In production, we use a special chrome-aws-lambda Chromium.
|
||||
const chromium = require("chrome-aws-lambda");
|
||||
const playwright = require("playwright-core");
|
||||
BROWSER = await playwright.chromium.launch({
|
||||
args: chromium.args,
|
||||
executablePath: await chromium.executablePath,
|
||||
headless: true,
|
||||
});
|
||||
} else {
|
||||
// In development, we use the standard playwright Chromium.
|
||||
const playwright = require("playwright");
|
||||
BROWSER = await playwright.chromium.launch({ headless: true });
|
||||
}
|
||||
}
|
||||
return BROWSER;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"apollo-server-env": "^3.0.0",
|
||||
"aws-sdk": "^2.726.0",
|
||||
"canvas": "^2.6.1",
|
||||
"chrome-aws-lambda": "^10.1.0",
|
||||
"dataloader": "^2.0.0",
|
||||
"dompurify": "^2.2.0",
|
||||
"easeljs": "^1.0.2",
|
||||
|
@ -41,7 +42,6 @@
|
|||
"lru-cache": "^6.0.0",
|
||||
"mysql2": "^2.1.0",
|
||||
"node-fetch": "^2.6.0",
|
||||
"playwright-aws-lambda": "^0.7.0",
|
||||
"playwright-core": "^1.14.0",
|
||||
"react": "^17.0.1",
|
||||
"react-autosuggest": "^10.0.2",
|
||||
|
@ -138,6 +138,7 @@
|
|||
"inquirer": "^7.3.3",
|
||||
"jest-image-snapshot": "^4.3.0",
|
||||
"lint-staged": "^10.5.4",
|
||||
"playwright": "^1.14.0",
|
||||
"prettier": "^2.0.5",
|
||||
"react-is": "^16.13.1",
|
||||
"ts-node": "^9.1.1",
|
||||
|
|
|
@ -22,5 +22,10 @@
|
|||
"src": "/static/js/[^.]*\\.[^.]*\\.chunk.js",
|
||||
"status": 404
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": {
|
||||
"api/assetImage.js": {
|
||||
"excludeFiles": "node_modules/playwright/**"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
46
yarn.lock
46
yarn.lock
|
@ -7768,6 +7768,13 @@ chownr@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
|
||||
|
||||
chrome-aws-lambda@^10.1.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/chrome-aws-lambda/-/chrome-aws-lambda-10.1.0.tgz#ac43b4cdfc1fbb2275c62effada560858099501e"
|
||||
integrity sha512-NZQVf+J4kqG4sVhRm3WNmOfzY0OtTSm+S8rg77pwePa9RCYHzhnzRs8YvNI6L9tALIW6RpmefWiPURt3vURXcw==
|
||||
dependencies:
|
||||
lambdafs "^2.0.3"
|
||||
|
||||
chrome-trace-event@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
|
||||
|
@ -12930,12 +12937,12 @@ kleur@^3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||
|
||||
lambdafs@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lambdafs/-/lambdafs-1.3.0.tgz#7e369cedc9a09623bb365fa99a1113c2ab2fc7ae"
|
||||
integrity sha512-HqRPmEgtkTW4sCYDUjTEuTGkjCHuLvtZU8iM8GkhD7SpjW4AJJbBk86YU4K43sWGuW5Vmzp1lVCx4ab/kJsuBw==
|
||||
lambdafs@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/lambdafs/-/lambdafs-2.0.3.tgz#f2acc53cf4862d29f1df654c327864b4faeb1d4a"
|
||||
integrity sha512-5YWwZA/QKk09GdfcJ/ABVO+bpFoGlnTBa5jmyM8Kt9yIzl2lDDVBPLK+Aenq2UEcuDpqxXIYI5zLB7VZNepTrg==
|
||||
dependencies:
|
||||
tar-fs "^2.0.0"
|
||||
tar-fs "^2.1.1"
|
||||
|
||||
language-subtag-registry@~0.3.2:
|
||||
version "0.3.21"
|
||||
|
@ -14886,13 +14893,6 @@ pkg-up@3.1.0, pkg-up@^3.1.0:
|
|||
dependencies:
|
||||
find-up "^3.0.0"
|
||||
|
||||
playwright-aws-lambda@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/playwright-aws-lambda/-/playwright-aws-lambda-0.7.0.tgz#6bef962700dc0053ff306ffbc04a11f26a994810"
|
||||
integrity sha512-vmcXA98LioRhcQg9v+xSLk/HHpkfuOyPQTFGx02rtUa00AEYuMQlNIEMSFn50Sm7R8cwQehyzI3FdKcWhYSAdA==
|
||||
dependencies:
|
||||
lambdafs "^1.3.0"
|
||||
|
||||
playwright-core@^1.14.0:
|
||||
version "1.14.0"
|
||||
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.14.0.tgz#af51da7b201c11eeda780e2db3f05c8bca74c8be"
|
||||
|
@ -14913,6 +14913,26 @@ playwright-core@^1.14.0:
|
|||
ws "^7.4.6"
|
||||
yazl "^2.5.1"
|
||||
|
||||
playwright@^1.14.0:
|
||||
version "1.14.0"
|
||||
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.14.0.tgz#18301b11f5278a446d36b5cf96f67db36ce2cd20"
|
||||
integrity sha512-aR5oZ1iVsjQkGfYCjgYAmyMAVu0MQ0i8MgdnfdqDu9EVLfbnpuuFmTv/Rb7/Yjno1kOrDUP9+RyNC+zfG3wozA==
|
||||
dependencies:
|
||||
commander "^6.1.0"
|
||||
debug "^4.1.1"
|
||||
extract-zip "^2.0.1"
|
||||
https-proxy-agent "^5.0.0"
|
||||
jpeg-js "^0.4.2"
|
||||
mime "^2.4.6"
|
||||
pngjs "^5.0.0"
|
||||
progress "^2.0.3"
|
||||
proper-lockfile "^4.1.1"
|
||||
proxy-from-env "^1.1.0"
|
||||
rimraf "^3.0.2"
|
||||
stack-utils "^2.0.3"
|
||||
ws "^7.4.6"
|
||||
yazl "^2.5.1"
|
||||
|
||||
please-upgrade-node@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
|
||||
|
@ -18090,7 +18110,7 @@ tapable@^1.0.0, tapable@^1.1.3:
|
|||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||
|
||||
tar-fs@^2.0.0:
|
||||
tar-fs@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
||||
|
|
Loading…
Reference in a new issue