11ty / api-screenshot

A service to add web page screenshots to your Eleventy sites.
https://v1.screenshot.11ty.dev
106 stars 33 forks source link

Chromium 50MB AWS Lambda Node 12 Mega Issue #17

Open zachleat opened 1 year ago

zachleat commented 1 year ago

Spawned from #13. Related to #15.

Ideally we could upgrade the node runtime https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html but newer versions of puppeteer blow past the 50MB AWS Lambda limit. I haven’t tested all versions of Puppeteer to see if there are some that work in Node 14 but don’t hit the 50MB limit yet.

Right now the workaround/requirement is to put an environment variable in your Netlify app UI setting AWS_LAMBDA_JS_RUNTIME to nodejs12.x. This cannot be set via netlify.toml (https://answers.netlify.com/t/netlify-functions-and-env-variables-from-netlify-toml/4404/28)

PR #14 uses the new package from Sparticuz: https://github.com/Sparticuz/chromium/issues/8

There is a hard deadline on this one (March 31, 2023) as Node 12 in AWS is going away: https://aws.amazon.com/blogs/developer/announcing-the-end-of-support-for-node-js-12-x-in-the-aws-sdk-for-javascript-v3/

Related:

aarongustafson commented 9 months ago

Any updates on this?

jaimeiniesta commented 9 months ago

In case it helps, here's an example to get a screenshot, that works with chromium-min, and puppeteer 18. Using chromium-min is the key here to get smaller deployments.

https://github.com/jaimeiniesta/screenshot-nextjs

The only issue I have is that fullPage: false is not respected and it always returns a full page screenshot. I have a PR to upgrade to puppeteer 19 where the screenshot size works as expected, but it times out in Vercel and I still don't know why.

https://github.com/jaimeiniesta/screenshot-nextjs/issues/9

matfantinel commented 3 months ago

Am I correct in assuming there's no way to deploy this package as-is to Netlify until this is resolved?

aarongustafson commented 3 months ago

Am I correct in assuming there's no way to deploy this package as-is to Netlify until this is resolved?

That's my experience, yes

allmarkedup commented 1 day ago

I've just opened #22 which should allow this to run on the latest Node LTS (20) on Netlify. It's been working for me but if anyone tries it and runs into issues with it please let me know :)

countfak commented 7 hours ago

I've just opened #22 which should allow this to run on the latest Node LTS (20) on Netlify. It's been working for me but if anyone tries it and runs into issues with it please let me know :)

Hi, I just tried and I confirm it's working. I basically followed what they suggest over here: https://www.blackspike.com/blog/netlify-puppeteer/