首页 > 解决方案 > 使用 AWS SAM CLI、CDK 和 Lambda 层时无法在本地调试

问题描述

在使用 SAM CLI、AWS CDK 和 Lambda 层构建 Lambda 函数时,我找不到有关如何在本地调试函数的示例或好的文档。

使用 CDK 构建 RestApi 和简单的 Lambda 函数,然后尝试使用 VSCode 使用启动配置进行本地调试,例如:

{
  "type": "aws-sam",
  "request": "direct-invoke",
  "name": "hello:app.handler (nodejs12.x)",
  "invokeTarget": {
    "target": "code",
    "projectRoot": "${workspaceFolder}/infrastructure/handlers/hello",
    "lambdaHandler": "app.handler"
  },
  "lambda": {
    "runtime": "nodejs12.x",
    "payload": {},
    "environmentVariables": {}
  }
}

从任何层引用模块的导入语句都会引发错误,例如:

{"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module '/opt/nodejs/utils'"

重现步骤:

  1. 克隆这个 repo:https ://github.com/swizzmagik/sam-lambda-layer-test
  2. 运行 npm 安装
  3. 运行 npm run build
  4. 运行 npm run api
  5. 观察 hello 函数正确解析层引用并且在使用 curl 或 postman 调用时工作正常
  6. 打开 handlers/hello/app.ts 并尝试通过打开 hello.ts 文件并按 F5 在 VSCode 中进行调试 注意调试器启动但无法导入模块并在此行失败 import { buildResponseHeaders, handleError } from "/选择/nodejs/utils";

标签: amazon-web-servicesvisual-studio-codeaws-cdkaws-sam-cliaws-lambda-layers

解决方案


推荐阅读