I am new to AWS Lambdas - I am trying to write a lambda function to retrieve some data from firebase. I have called this function exports.handler and uploaded it to the Lambda with the node modules as a Zip file. However, when I try to run it, it returns the following 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:899
Here is my function:
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));
})
})
I have looked at the other answers to questions similar to mine and implemented some of those solutions but none have worked.
When we zip a directory the shell directory is also added to the zip while the Lambda expects it to be without the shell directory. Use the below command to create the zip correctly.
$ cd my_lambda_fun
$ zip -r lambda_one.zip .
You have to make sure that you don't zip your project but the contents of your project.
For eg, if your index.js
is directly inside my-project
, you should $> cd my-project
and then create a zip with the contents. This zip can then be uploaded to AWS Lambda.
I hope this helps!
Ensure index.js is in the root of the Lambda function directory
zip -r lambda_one.zip. worked for me
Some of the answers here are indeed correct, but if you're like me and trying to do this from Windows then it should be noted that $ zip -r lambda_one.zip.
will not work from PowerShell as it will in Linux and macOS.
The workaround was simply to zip the folders + files manually in the file explorer:
This was one error I also got while Trying to execute the NodeJs Code. The following are the points we need to take care:
before the this line def handler(event, context):
if you have any imports, then remove those. It should work.
Be careful for not being using a wrong Running engine like NodeJS but writing code in Python or something of that nature. Go to the Lambda function info link and select the correct Running Engine for your development.
Make sure to name your handler file as index.js
other you will get this error
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.