无服务器本地调用无反应

5

我正在尝试在本地运行Node Lambda以进行调试。我正在使用Serverless和vsCode中的此启动配置

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceRoot}/node_modules/.bin/sls",
      "args": [
        "invoke",
        "local",
        "--function",
        "hello",
        "--data",
        "hello world"
      ]
    }
  ]
}

我的export.handler代码如下:

module.exports.handler = (event, context, callback) => {
  if (event.triggerSource === CONSTANTS.TRIGGER_SOURCE) {
    console.log("event = " + JSON.stringify(event));
    const uri = process.env.SCT_URL_BASE;
    const country = process.env.SCT_COUNTRY;

    const username = 
event.request.userAttributes[CONSTANTS.USER_ATTRIBUTES];
    const codeP = event.request.codeParameter;
    console.log("URI = " + url);
    console.log("Code:" + codeP);

    getUrlData(uri, country, username, codeP);
  } else {
    context.done(null, event);
  }
};

当我运行调试模式时,它什么也没做。Serverless没有抛出任何错误,我只是无法进入函数内部。此外,还有另一件事情我不理解。在Serverless文档中,它说:--function 或 -f 您希望本地调用的服务中函数的名称。必需的。我不知道他们指的是什么,是我们调用运行Lambda的函数还是当调用Lambda时被调用的函数。在这种情况下,我导出的函数是"handler",但它也不起作用。谢谢。

导致这个问题的原因是我在 Serverless 服务目录之外运行了 sls 命令。请确保你在正确的目录中。 - Harvinder
1个回答

0

我已经使用了这种方法,它对我很有效:

https://standardofnorms.wordpress.com/2017/12/03/locally-debugging-aws-lambdas-written-in-node-js/

不好的是,由于serverless社区更大,我想使用serverless而不是lambda-local包。不过lambda-local确实很好用,所以我在这里向它的创建者送上一个大大的拥抱。

仍然非常欢迎回答第一个问题。

编辑:好的,我解决了这个问题。

Serverless作为框架时,使用serverless.yml文件添加一些配置。在那里,我必须使用serverless命令创建我要运行的函数,然后将其指向我处理程序所在的文件。这是我的serverles.yml:

service: serverless-simple

frameworkVersion: ">=1.1.0 <2.0.0"

provider:
  name: aws
  runtime: nodejs4.3

functions:
  lambdaHandler:
    handler: src/customMessageLambda.handler
    events:
      - http:
          path: ping

当然,我需要再对这个文件进行一些研究,但是我已经解决了我的问题。

希望这能帮助到某个人,在某个时候。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接