我正在使用Java编写lambda函数,希望使用opencv库。我很难理解如何设置它。请帮忙。我可以在本地很好地设置它,但是我真的对lambda部分感到困惑。
修改: 更精确地说,我遇到了System.LoadLibrary()函数的问题。dll文件在项目文件中,但lambda找不到它。
修改: 更精确地说,我遇到了System.LoadLibrary()函数的问题。dll文件在项目文件中,但lambda找不到它。
System.load(new ClassPathResource("/libopencv_javaXXX.so").getFile().getAbsolutePath());
System.LoadLibrary()函数从Java库路径加载库,而System.Load()函数将从绝对路径加载本地库。
我建议使用Node.js而不是Java,因为Lambdas与Node.js更兼容。
你的代码将会像这样:
cv = require('opencv');
//do something with cv...
npm install opencv
这将创建一个node_modules
文件夹。一旦在本地运行了您的代码,您需要执行一个额外的步骤,然后将所有内容(即your-code.js
和node_modules
文件夹)压缩成lambda-package.zip
并上传到AWS Lambda。
Lambda的额外步骤:
Lambda代码在Amazon Linux环境中运行(而不是您的本地环境)。这意味着您应该在该环境中构建节点包。您可以启动EC2实例并在该机器上执行npm install部分,或者您可以使用Docker镜像。
这里有一篇不错的文章:
https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/