首页 > 解决方案 > Sam local Invoke lambda 与本地层错误“无法导入包”

问题描述

当使用“Sam local invoke”在本地调用 lambda 时,该 lambda 也依赖于本地构建的层,该函数无法找到属于该层的模块。

使用“sam local invoke FUNCTIONNAME”在本地调用我的 lambda 时出现“无法导入包”错误。这些包已经存在于层(压缩文件夹)中。他们有什么方法可以在本地测试这些将 python 依赖项压缩到层中的 lamdas。

START RequestId:083247f2-3011-428c-a529-50eba6d668f2 版本:$LATEST 无法导入模块“getnext”:没有名为“apiconfig”的模块 END RequestId:083247f2-3011-428c-a529-50eba6d668f2 REPORT RequestId:083247f2-3011 -a529-50eba6d668f2 持续时间:12 毫秒计费持续时间:100 毫秒内存大小:128 MB 使用的最大内存:19 MB

'apiconfig' 模块已经存在于 layer.zip 中

期望是所有层模块都应该在执行“sam local invoke”时在某个临时位置下载,以便它可以获取所有包并运行lamda,因此我也尝试使用--layer-cache-basedir DIRECTORY 标志,但仍然得到同样的错误,尽管 docker 文件是在 DIRECTORY 路径生成的。此外,即使我没有提供 --skip-pull-image 标志,它仍然显示请求跳过拉取图像。添加了 --force-image-build 标志太 错误

标签: amazon-web-servicesaws-lambdaaws-serverlessaws-sam-cli

解决方案


对于 Google 员工:

  • Requested to skip pull images在这种情况下没关系
  • 确保您的本地层是一个目录,而不是一个 zip 文件
  • /opt使用 lambda 函数中的代码确保模块存在于文件夹中
  • 确保您指的是正确的路径template.yaml

我按顺序执行了上述操作,发现这是一个愚蠢的错误。


推荐阅读