我正在尝试使用watson_developer_cloud sdk部署python Lambda包。密码学是该软件包具有的众多依赖项之一。我在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
在注释中,正如本solution中所解释的,我已经使用zip -r9 $ DIR / lambda_function.zip创建了我的包。代替 *。但它仍然不适合我。
任何方向都非常值得注意。
“libffi-d78936b1.so.6.0.4”位于名为“.libs_cffi_backend”的隐藏文件夹中。
因此,要在lambda zip中添加此隐藏文件夹,您应该执行以下操作:
这将在上面的目录中创建一个名为“lambda_function.zip”的zip文件,其中包含当前目录中的所有文件(第一个)以及每个开头的文件。但不是.. *([^。])
在这种情况下,我会投入一些时间来设置本地SAM环境,以便您可以:
1 - 调试Lambda
2 - 检查正在打包的内容和文件层次结构
https://docs.aws.amazon.com/lambda/latest/dg/test-sam-cli.html
或者,您可以删除此导入并检测lambda函数以打印它“看到”的一些文件和目录。
我强烈建议您尝试SAM,因为它不仅可以使这种调试方式更容易,而且还可以进行任何进一步的测试。 Lambdas很难调试。