Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging Serverless Framework invoke local function

I am trying to debug sls invoke local.

My setup:enter image description here

However I keep getting:

/Users/nikos/.nvm/versions/node/v6.9.1/bin/node --debug-brk=63417 --expose_debug_as=v8debug /Users/nikos/.nvm/versions/node/v6.9.1/bin/serverless invoke local -f createTodo
Debugger listening on [::]:63417

Process finished with exit code 130 (interrupted by signal 2: SIGINT)
like image 275
Nikos Avatar asked Feb 07 '17 09:02

Nikos


2 Answers

OK, I've figured out how to do this with real Chrome Devtools with the excellent node --inspect. This is much better than node inspector because it uses the latest built in chrome devtools. (more info on node inspect)

node --debug-brk --inspect $(which serverless) invoke local -f myfunctionname

I ran that but my function wasn't loaded yet (probably some lazy loading in the serverless code). So I added a debugger to the top line of my function and everything seems to be working great.

In my case I also needed some test data, so I passed that through like this.

node --debug-brk --inspect $(which serverless) invoke local -f postprocess -d '{"Records":[{"eventVersion":"2.0","eventSource":"aws:s3","awsRegion":"us-east-1","eventTime":"2017-06-17T05:08:29.598Z","eventName":"ObjectCreated:Put","userIdentity":{"principalId":"ALS78N87ZDYNW"},"requestParameters":{"sourceIPAddress":"52.119.114.78"},"responseElements":{"x-amz-request-id":"2EB4FAD5892EC247","x-amz-id-2":"nVLasIYsWvWm7xwONiTB6z7L8oXKkvPOb9FntOYoG/kKS+PuWwbMJ1xM7n/C1X3NJh5FUCj4aEM="},"s3":{"s3SchemaVersion":"1.0","configurationId":"3c3b2a71-b639-4116-b246-08dcacd0c7d6","bucket":{"name":"simmer-uploads-test","ownerIdentity":{"principalId":"ALS78N87ZDYNW"},"arn":"arn:aws:s3:::simmer-uploads-test"},"object":{"key":"example+%285%29.zip","size":4757597,"eTag":"9aa90579ee4e8152e6dfa60258754a83","sequencer":"005944B94AD9307261"}}}]}'

I am working on a Mac, and I heard there might be some problems with $(which serverless) on windows. But someone give it a shot and let me know.

like image 186
RoccoB Avatar answered Nov 05 '22 08:11

RoccoB


I was able to setup my PHPStorm debugger configuration in a way that now I can step through my functions locally (using serverless-offline plugin).

I am triggering functions via http requests using Postman.

See below steps to achieve this:

1. Setup configuration for debugging serverless app offline in PHPStorm

2. Console output after debugger started

3. Sending request via Postman

4. Be able to step through your function

like image 34
Piotr Kowalski Avatar answered Nov 05 '22 08:11

Piotr Kowalski