Jor*_*phy 5 javascript debugging lambda node.js serverless-framework
我正在尝试在本地运行节点 lambda 来调试它。我在 vsCode 中使用 Serverless 和这个启动配置
{
"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"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的 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);
}
};
Run Code Online (Sandbox Code Playgroud)
当我运行 de 调试模式时,它什么也不做。Serverless 不会抛出任何错误,我只是无法到达函数内部。
此外,还有一件事我无法理解。在无服务器文档中它说:
--function 或 -f 服务中要在本地调用的函数的名称。必需的。
我不知道他们在这里指的是什么,是我们调用来运行 lambda 的函数还是调用 lambda 时调用的函数。在这种情况下,我导出的函数是“处理程序”,但它也不起作用。
提前致谢。
我已经使用了这种方法并且它对我有用:
https://standardofnorms.wordpress.com/2017/12/03/locally-debugging-aws-lambdas-writing-in-node-js/
不好的是,由于无服务器社区更大,我想使用无服务器而不是 lambda-local 包。不过,Lambda-local 的作用就像魅力一样,所以我在这里向它的创建者致以一个大大的拥抱。
第一个问题的答案仍然非常受欢迎。
编辑:好的,我明白了。
结果,当我们需要添加一些配置时,Serverless 作为框架,使用 serverless.yml 文件。在那里,我必须创建要使用无服务器命令运行的函数,然后将其指向我拥有处理程序的文件。这是我现在的 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
Run Code Online (Sandbox Code Playgroud)
当然,我必须对此文件进行更多研究,但我已经解决了我的问题。
希望这有时能帮助某人。