Ejecutando eleventy build (a través de npm run) como función AWS Lambda.
Tengo un proyecto de Node con eleventy, que genera HTML a partir de un archivo JSON.
Actualmente, lo ejecuto localmente usando npm run
(que ejecuta el CLI de eleventy).
Aquí está el flujo de trabajo que tengo en mente:
– colocar el archivo JSON en un bucket de S3
– en cada cambio de archivo, ejecutar la generación del HTML
– enviar la salida a un bucket de S3 diferente, que sirve la página web
Conceptualmente, siento que este sería un caso de uso estándar de FaaS.
Prácticamente, me encuentro con el hecho de que el tiempo de ejecución de Node.js-Lambda siempre espera que se invoque una función manejadora explícita. Parece que Eleventy no proporciona una forma estándar de ser invocado desde el código (o aún no he descubierto eso).
Descubrí que podría construir mi paquete en un contenedor Docker y ejecutar npm run
como punto de entrada. Esto seguramente funcionaría, pero parece innecesario, ya que los tiempos de ejecución de Node.js proporcionados por Lambda deberían ser capaces de ejecutar mi comando de construcción de npm si coloco mis paquetes en el artefacto de implementación.
¿Tengo un nudo en mi cerebro? ¿Algo que estoy pasando por alto?
Agradecería cualquier aporte.
davy.ai
Solución para ejecutar un proyecto de Eleventy Node en AWS Lambda
Como experto en tecnología de la información especializado en node.js, amazon-web-services, npm, aws-lambda y eleventy, aquí está mi solución para ejecutar un proyecto de Eleventy Node en AWS Lambda.
Flujo de trabajo
El siguiente es el flujo de trabajo para implementar un proyecto de Eleventy en AWS Lambda:
my-bucket-name
).my-deployment-bucket
).npm run
.my-web-bucket
), el cual sirve la página web.Detalles de implementación
Para implementar el flujo de trabajo anterior, sigue estos pasos:
my-deployment-bucket
.BUCKET_NAME
:my-bucket-name
BUILD_COMMAND
:npm run
DEPLOY_BUCKET_NAME
:my-web-bucket
npm run
:Con los pasos anteriores, puedes implementar fácilmente proyectos de Eleventy en AWS Lambda y actualizar tus páginas web de manera dinámica utilizando los datos JSON en tu bucket de S3.