amazon-web-services - 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 标志太 错误
解决方案
对于 Google 员工:
Requested to skip pull images
在这种情况下没关系- 确保您的本地层是一个目录,而不是一个 zip 文件
/opt
使用 lambda 函数中的代码确保模块存在于文件夹中- 确保您指的是正确的路径
template.yaml
我按顺序执行了上述操作,发现这是一个愚蠢的错误。