Amazon web services 带层的本地AWS Lambda调试

Amazon web services 带层的本地AWS Lambda调试,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我创建了一个SAM应用程序,并希望在本地对其进行调试。 应用程序有一些在Lambda层中指定的依赖项。 这个lambda层是用其他功能实现和测试的-运行正常 我在templates.json中指定了此层的需要: Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 Layers: arn:aws:l......:2 但是当我在本地调试时,

我创建了一个SAM应用程序,并希望在本地对其进行调试。 应用程序有一些在Lambda层中指定的依赖项。 这个lambda层是用其他功能实现和测试的-运行正常

我在
templates.json
中指定了此层的需要:

Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.7
      Layers:  arn:aws:l......:2
但是当我在本地调试时,我得到一个错误,即依赖项在本地装载的Docker容器中不存在。在这种情况下,是sqlalchemy:

Fetching lambci/lambda:python3.7 Docker container image......
Mounting C:\.....\Temp\aws-toolkit-vscode\...\output\awsToolkitSamLocalResource as /var/task:ro,delegated inside runtime container
START RequestId: ...... Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'app___vsctk___debug': No module named 'sqlalchemy'
如果我在
requirements.txt
中指定依赖项,它可以正常工作,但我知道如果我这样做,依赖项将包含在部署包中,这是我不想要的

如何在收集层依赖关系的docker映像下进行调试

层被提取到函数执行环境中的
/opt
目录中。每个运行时根据语言在
/opt
下的不同位置查找库。这样函数代码就可以访问库而无需额外配置

您可以尝试使用docker图像在本地模拟此操作,方法是将层的内容装载到
/opt
的适当子文件夹中。对于Python来说,正确的安装位置似乎是
/opt/Python