我正在尝试使用watson_developer_cloud sdk部署python包。密码学是这个包所具有的许多依赖关系之一。我已经在Linux机器上构建了这个包。我的包也包括.libffi-d78936b1.so.6.0.4隐藏文件。但我的lambda函数仍然无法访问它。我仍然得到'libffi-d78936b1.so.6.0.4:无法打开共享对象文件‘错误。我在Vagrant服务器上构建了我的软件包,使用了这里的说明:https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg-python
准确错误:
Unable to import module 'test_translation': libffi-d78936b1.so.6.0.4: cannot open shared object file: No such file or directory注意,正如在这个解决方案中所解释的,我已经使用zip -r9 $DIR/lambda_-r9.zip .而不是*创建了我的包。但对我来说还是没用的。
任何方向都是非常值得注意的。
发布于 2019-03-27 14:05:16
libffi-d78936b1.so.6.0.4位于名为.libs_cffi_backend的隐藏文件夹中。
因此,要在lambda zip中添加这个隐藏文件夹,您应该执行以下操作:
zip -r ../lambda_function.zip * .[^.]*这将在上面的目录中创建一个名为lambda_function.zip的zip文件,其中包含当前目录中的所有文件(第一个*)和以.*而不是..* ([^.])开头的所有文件。
发布于 2018-07-07 05:46:23
在这种情况下,我会花一些时间建立一个本地SAM环境,这样您就可以:
1-调试你的Lambda
2-检查正在打包的内容和文件的层次结构。
https://docs.aws.amazon.com/lambda/latest/dg/test-sam-cli.html
或者,您可以删除此导入,并检测您的lambda函数以打印它“看到”的一些文件和目录。
不过,我强烈建议您尝试SAM,因为它不仅会使调试更容易,而且还会使您需要执行的任何进一步测试都更简单。Lambda很难调试。
发布于 2020-03-03 15:18:46
有点晚了,我会对弗兰克的回答发表评论,但没有足够的声誉。
我在部署包中包含了隐藏目录.libs_cffi_backend,但由于某种原因,Lambda无法找到位于其中的libffi-d78936b1.so.6.0.4文件。
在将该文件复制到与我的lambda处理程序相同的“根”级别目录后,它能够加载依赖项并执行。
此外,确保部署包中的所有文件都是可读的chmod -R 644 .。
https://stackoverflow.com/questions/51219096
复制相似问题