【问题标题】:Local AWS Lambda debugging with layers使用层进行本地 AWS Lambda 调试
【发布时间】:2020-08-18 20:17:38
【问题描述】:

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

我在templates.json中指定了需要这个层:

Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.7
      Layers:  arn:aws:l......:2

但是当我Debug Locally 时,我收到错误消息,即本地挂载的 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镜像下调试?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    根据docs

    层被提取到函数执行环境中的/opt目录。每个运行时都在 /opt 下的不同位置查找库,具体取决于语言。 Structure your layer 让函数代码无需额外配置即可访问库。

    您可以尝试通过将图层的内容安装到/opt 的正确子文件夹中来使用您的 docker 映像在本地模拟这一点。对于 Python,正确的挂载位置似乎是 /opt/python

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      相关资源
      最近更新 更多