Amazon web services 带层的本地AWS Lambda调试
我创建了一个SAM应用程序,并希望在本地对其进行调试。 应用程序有一些在Lambda层中指定的依赖项。 这个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 但是当我在本地调试时,
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