在AWS Lambda和AWS Cloudwatch中使用Typescript源映射

在AWS Lambda和AWS Cloudwatch中使用Typescript源映射,typescript,aws-lambda,amazon-cloudwatch,Typescript,Aws Lambda,Amazon Cloudwatch,我正在使用AWS Lambdas和由ESBuild构建的Typescript ESBuild将所有必要的代码聚合到一个index.js构建文件中,这使得冷启动非常快,并确保不会发送不必要的代码。 它还可以生成源地图 您知道如何让Cloudwatch了解sourcemaps,以便获得与实际源代码而不是构建相关的stacktraces吗?我找到了答案:NodeJS支持sourcemaps,Lambda支持节点选项 在Typescript上生成sourcemaps,只需将此环境变量添加到lambda:

我正在使用AWS Lambdas和由ESBuild构建的Typescript

ESBuild将所有必要的代码聚合到一个index.js构建文件中,这使得冷启动非常快,并确保不会发送不必要的代码。 它还可以生成源地图

您知道如何让Cloudwatch了解sourcemaps,以便获得与实际源代码而不是构建相关的stacktraces吗?

我找到了答案:NodeJS支持sourcemaps,Lambda支持节点选项

在Typescript上生成sourcemaps,只需将此环境变量添加到lambda:

NODE_OPTIONS=--enable-source-maps
现在,当stacktrace被记录时,它指向原始文件和行

{
  "errorType": "Error",
  "errorMessage": "Missing process.env.TABLE_EVENT",
  "trace": [
    "Error: Missing process.env.TABLE_EVENT",
    "    at /var/task/index.js:12496:11",
    "        -> /backend/service/userService/lib/dynamodb.js:6:9",
    "    at /var/task/index.js:4:5",
    "    at /var/task/index.js:16979:18",
    "        -> /backend/service/userService/lib/handlers/publishReminders.js:4:26",
    "    at /var/task/index.js:4:5",
    "    at /var/task/index.js:17121:33",
    "        -> /backend/service/userService/lib/handlers/index.js:1:43",
    "    at /var/task/index.js:4:5",
    "    at Object.<anonymous> (/var/task/index.js:17136:16)",
    "        -> /backend/service/userService/lib/index.js:16:26",
    "    at Module._compile (internal/modules/cjs/loader.js:999:30)",
    "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)",
    "    at Module.load (internal/modules/cjs/loader.js:863:32)"
  ]
}
{
“errorType”:“Error”,
“errorMessage”:“缺少process.env.TABLE_事件”,
“跟踪”:[
“错误:缺少process.env.TABLE_事件”,
“at/var/task/index.js:12496:11”,
“->/backend/service/userService/lib/dynamodb.js:6:9”,
“at/var/task/index.js:4:5”,
“at/var/task/index.js:16979:18”,
“->/backend/service/userService/lib/handlers/publishrementers.js:4:26”,
“at/var/task/index.js:4:5”,
“at/var/task/index.js:17121:33”,
“->/backend/service/userService/lib/handlers/index.js:1:43”,
“at/var/task/index.js:4:5”,
“at对象。(/var/task/index.js:17136:16)”,
“->/backend/service/userService/lib/index.js:16:26”,
“at模块编译(内部/modules/cjs/loader.js:999:30)”,
“at Object.Module._extensions..js(internal/modules/cjs/loader.js:1027:10)”,
“at Module.load(内部/modules/cjs/loader.js:863:32)”
]
}