Debugging Use Case
Serverless functions can be invoked locally with the Serverless CLI.
$ sls invoke localIf you set up your functions to write event payloads into your CloudWatch logs, the logged event payload can be used as the local event payload with the --path flag.
Using the VSCode debugger:
You can set breakpoints to step-through and inspect your function during runtime with the exported payload that caused your function to error.
Run a Serverless function locally
In this exampole we're invoking the function named index with the flag --function. The function name index is specified by the serverless.yml.
We're also passing a data payload with the flag, --path, which points to a local json file that will be passed to the function as an event payload.
## --function | -f: Name of the function
## --path | -p: Path to a json file to be used as the event input data
$ sls invoke local --function index --path 'logs-export.json'
## Output
{
    "statusCode": 200,
    "body": "{\n
               \"message\": \"Running function, \"index\" \",\n
               \"input\": {\n    \"foo\": \"bar\"\n  }
             \n}"
}provider:
  name: aws
  runtime: nodejs12.x
functions:
  index:    handler: functions/index.handler
    events:
      - http:
          path: /
          method: getmodule.exports.handler = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify(
      {
        message: `Running function, "index"`,
        input: event,      },
      null,
      2
    ),
  };
};Attaching a Visual Studio Code debugger
Since we're invoking the function locally, we can also attach a VSCode debugger breakpoint.
- Install serverless as a local dependency to project
 
$ yarn add -D serverless- Set up a new VSCode 
launch.json 
The main part of the launch.json is to:
- Point the 
programto the locally installed serverless dependency innode_modules - Pass in the same arguments that we used to run 
sls invoke local 
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/.bin/sls",      "args": ["invoke", "local", "-f", "hello", "-p", "logs-export.json"]    }
  ]
}- Set up a breakpoint locally in VSCode
 - Use VSCode debugger to run the created launch.json