简体   繁体   中英

Running eleventy build (via npm run) as AWS Lambda function

I have a eleventy Node project, which renders HTML from a JSON file.

Currently, I run this locally using npm run (which runs the eleventy CLI )

Here's the workflow I have in my head:

  • put the JSON file in a S3 bucket
  • on each file change, run the HTML build
  • push the output to a different S3 bucket, which serves the web page

Conceptually, I feel like this would be a standard FaaS use case.

Practically, I stumble over the fact that the Node.js-Lambda runtime always expects an explicit function handler to be invoked. It seems Eleventy does not provide a standard way to be invoked from code (or I have not discovered this yet).

I found that I could build my package into a Docker container and run the npm run as Entrypoint. This would surely work, but seems unnecessary, since the Lambda-provided Node.js runtimes should be capable of running my npm build command if I put my packages in the deployment artifact.

Do I have a knot in my brain? Anything I'm overlooking? Would be happy about any input.

I'm not sure this is supported as I don't see it documented, but I looked at the unit tests for Eleventy and saw many examples of this ( https://github.com/11ty/eleventy/tree/master/test ). I tried the following and it worked. Note that init an write are both async and I do NOT properly await them, I was just trying to get a simple example:

const Eleventy = require('@11ty/eleventy');

const elev = new Eleventy('./input', './output');

elev.init();
elev.write();

console.log('done');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM