11ty/api-screenshot

Chromium 50MB AWS Lambda Node 12 Mega Issue

zachleat opened this issue · 7 comments

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: Sparticuz/chromium#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:

Any updates on this?

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.

jaimeiniesta/screenshot-nextjs#9

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

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

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 :)

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/

This should be solved by #22 and #14, thank you @allmarkedup and @LewisDaleUK!

Note also that the production service for this v1.screenshot.11ty.dev is now running on Vercel and the v1-vercel branch is now the primary one that I’ll be maintaining moving forward. As noted in #22, I’m happy to continue to merge PRs to v1-netlify if folks want to help maintain that one.