amazon-web-services - 使用 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'"
重现步骤:
- 克隆这个 repo:https ://github.com/swizzmagik/sam-lambda-layer-test
- 运行 npm 安装
- 运行 npm run build
- 运行 npm run api
- 观察 hello 函数正确解析层引用并且在使用 curl 或 postman 调用时工作正常
- 打开 handlers/hello/app.ts 并尝试通过打开 hello.ts 文件并按 F5 在 VSCode 中进行调试 注意调试器启动但无法导入模块并在此行失败 import { buildResponseHeaders, handleError } from "/选择/nodejs/utils";
解决方案
推荐阅读
- twitch-api - React Native 中的 Twitch API 使用
- vb.net - 来自另一个函数vb.net的按钮属性中的跨线程操作
- c++ - 使用相同的 CMakeLists.txt 构建多个项目
- windows - 如何在 Windows 上关闭或黑屏显示器
- vbscript - 如何通过启动远程应用程序运行 vbsript
- ruby - ex17.rb:5:in `open':没有从 ex17.rb:5:in ` 将 nil 隐式转换为 String (TypeError)
' - python - 刷新类中的变量值
- django - django中具有基于类的功能的页面标题
- ruby - 是否可以在纯 Ruby 中指定使用特定浏览器打开 URL?
- ruby-on-rails - 安装 mini_racer (0.4.0) 时出错,Bundler 无法继续