Soy nuevo en AWS Lambdas. Estoy tratando de escribir una función lambda para recuperar algunos datos de firebase. Llamé a esta función export.handler y la subí a Lambda con los módulos de nodo como un archivo Zip. Sin embargo, cuando intento ejecutarlo, devuelve el siguiente error:
{ "errorType": "Runtime.HandlerNotFound", "errorMessage": "index.handler is undefined or not exported", "trace": [ "Runtime.HandlerNotFound: index.handler is undefined or not exported", " at Object.module.exports.load (/var/runtime/UserFunction.js:144:11)", " at Object.<anonymous> (/var/runtime/index.js:43:30)", " at Module._compile (internal/modules/cjs/loader.js:1156:30)", " at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)", " at Module.load (internal/modules/cjs/loader.js:1000:32)", " at Function.Module._load (internal/modules/cjs/loader.js:899Aquí está mi función:
module.exports.handler = async (event) =>{ ref.on("value", function(snapshot) { snapshot.forEach(function(childSnapshot) { responses.push({ date: childSnapshot.val().Date, name:childSnapshot.val().name, response: childSnapshot.val().response }) }); printObjects(responses); console.log(json(responsesByPerson)); }) })Miré las otras respuestas a preguntas similares a la mía e implementé algunas de esas soluciones, pero ninguna funcionó.
Cuando comprimimos un directorio, el directorio de shell también se agrega al zip, mientras que Lambda espera que esté sin el directorio de shell. Use el siguiente comando para crear el zip correctamente.
$ cd my_lambda_fun $ zip -r lambda_one.zip .Asegúrese de que index.js esté en la raíz del directorio de funciones de Lambda
zip -r lambda_one.zip. trabajó para mi