node.js - funcion - lambda node js
Cómo probar las funciones aws lambda localmente (7)
Tengo un backend de aplicación móvil desarrollado con node.js express. Lo intenté para desplegarlo como servicio lambda. Para eso creé un proyecto de Framework Serverless ( https://github.com/serverless ). Anteriormente probé la aplicación móvil localmente iniciando la aplicación de backend express. Ahora no puedo encontrar un método para probar mi aplicación móvil localmente sin el backend local. jaws run
command solo se ejecuta una vez que lo llamé.
¿Hay algún método para iniciar la función lambda como un servicio web? ¿O hay alguna alternativa a Serverless Framework?
A partir de la fecha de esta publicación, puede ejecutar funciones localmente haciendo la sls function run [name-of-function]
. Cualquier json utilizado en el event.json
su función. event.json
pasará a su función.
Para probar sus puntos finales, también puede usar serverless-offline que es una bifurcación del proyecto serverless-serve
.
Ahora puedes usar lambda-local .
Instálalo así:
sudo -H npm install -g lambda-local
Agregue sus parámetros como un objeto JSON a un archivo, en este ejemplo event.json
, y llame al archivo index.js
así:
lambda-local -l index.js -h handler -e event.json
Como aún no se ha lanzado 1.4 ...
La semana pasada necesitaba exactamente lo mismo. Por lo tanto, creé un pequeño servidor simulado que se puede ejecutar localmente: https://github.com/martinlindenberg/JawsLocalServer
- Todos los encabezados y parámetros se copiaron en el objeto de evento que se pasa al controlador.
- El objeto de contexto es un objeto simple que reenvía los datos al objeto de respuesta
El plugin Bespoken sevrerless hace que tus Lambdas locales sean accesibles desde el exterior. Es muy útil tanto para las pruebas locales con Postman como para los servicios basados en Webhook (como Alexa, Slack, Twilio, etc.).
La arquitectura se muestra aquí:
Para usarlo, simplemente instale el complemento, luego ejecute:
sls proxy
A continuación, puede comenzar a enviar solicitudes a su servicio localmente:
Creemos que es una herramienta muy útil para realizar pruebas con serverless.
Esto puede ser demasiado tarde ... Pero ahora puede probar Serverless-Offline ( https://www.npmjs.com/package/serverless-offline ) funciona como un encanto
También esta es la página de github para ello ( serverless-offline )
No estoy seguro de si esta pregunta sigue siendo relevante o no, pero estoy usando DEEP Framework para probar el código localmente y / o implementarlo en AWS Lambda. Mira esto:
npm install deepify -g
deepify run-lambda --help
[email protected] - Run Lambda function locally
Usage example: deepify run-lambda path/to/the/lambda -e=''{"Name":"John Doe"}''
Arguments:
path: The path to the Lambda (directory of handler itself)
Options:
--event|-e: JSON string used as the Lambda payload
--skip-frontend-build|-f: Skip picking up _build path from the microservices Frontend
--db-server|-l: Local DynamoDB server implementation (ex. LocalDynamo, Dynalite)
--version|-v: Prints command version
--help|-h: Prints command help
Divulgación: Soy uno de los contribuyentes a este marco.
No parece que haya manera de hacerlo ahora mismo, pero la versión 1.4.0 está a punto de ser lanzada y, entre otras cosas, debe incluir un nuevo comando "jaws serve" que debería solucionar su problema.
Aquí está el PR: https://github.com/jaws-framework/JAWS/pull/269
ACTUALIZACIÓN: ahora puede usar el nuevo complemento serverless-serve para esto.
ACTUALIZACIÓN 2: serverless-serve no se ha actualizado desde hace tiempo, parece que serverless-offline es una opción mucho mejor ahora para emular las funciones de Lambda.