node.jsamazon-web-servicesaws-lambdaalexa-skills-kitrequestjs

After NodeJS script has an error, it will not start again. AWS Lambda


I have a lambda function on the nodejs4.x runtime. If my script stops execution due to an error, lets say I try to get .length of an undefined object, then I can't start the script again. It's not even like the script runs and hits the same error, the script doesn't run. The lambda handler function is never called the second time.

This lambda function is the endpoint for Amazon Alexa. When I reupload the code (a zip file) then the system works again.

Is this some behavior of nodejs? Is the script ending prematurly corrupting the files so it cannot start again?

When the server hits an error I get this message Process exited before completing request

And then subsequent requests hit the timeout limit.

Important Edit I have pinpointed the issue to NPM request. the module doesnt finish loading ie.

console.log('i see this message');
var request = require('request');
console.log('this never happens');

Solution

  • So after contacting AWS through their forums, this turns out to be a bug. The container is not cleared upon an error, so the code has to be re-uploaded.

    A solution is to make a cloudwatch alarm that fires another lambda function that re uploads the code automatically.

    They are working on a fix.

    Forum post: https://forums.aws.amazon.com/thread.jspa?threadID=238434&tstart=0