这是由于 AWS SAM 中 Lambda 运行时许多优化过的模块被缓存到 / var / runtime 目录中。在运行 AWS Lambda 函数时,AWS 将运行时捆绑预装到 / var / runtime 中。在使用 AWS SAM CLI 调试 Lambda 函数时,您将连接到您的函数容器并启动调试器。此过程并未加载 AWS Lambda 运行时,因此它会中断在 /var/runtime/index.js 上。
要解决此问题,您需要将运行时加载到 VS Code 的启动项中。在 VS Code 启动项目中的 launch.json 中,找到您的配置,并添加 runtimeArgs 以加载 Lambda 运行时。以下是一个示例:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to SAM CLI",
"type": "node",
"request": "attach",
"address": "localhost",
"port": 5858,
"localRoot": "${workspaceFolder}/src",
"remoteRoot": "/var/task",
"protocol": "inspector",
"runtimeArgs": [
"--inspect-brk",
"/var/runtime/node_modules/aws-sdk/lib/node_loader.js"
]
}
]
}
添加 runtimeArgs,以便加载 AWS Lambda 运行时。这可以确保您的调试器在 /var/runtime 目录中加载启动文件,从而避免了首个中断。