通过Java JNA在AWS Lambda上加载libMagickCore

时间:2019-02-07 09:18:15

标签: amazon-web-services aws-lambda serverless

我目前正在尝试将最新版本的libvips8.7.4)部署到AWS Lambda Java 8函数。该函数为libvips定义了JNA接口。

我们分叉了libvips-lambda GitHub存储库,该存储库提供了较旧版本的构建链,并对其进行了更新以使其适用于8.7.4(请参见{{3 }}。

然后,我们将libvips及其所有依赖项移至AWS Lambda部署ZIP存档中的文件夹develop中,并设置以下环境变量:lib

然后,我们尝试在Java函数中加载该库:

LD_LIBRARY_PATH: /var/task/lib

这最终导致以下异常:

Native.load("lib/libvips.so", ...

奇怪的是,libMagickCore-7.Q16HDRI.so.2: cannot open shared object file: No such file or directory: java.lang.UnsatisfiedLinkError java.lang.UnsatisfiedLinkError: libMagickCore-7.Q16HDRI.so.2: cannot open shared object file: No such file or directory at com.sun.jna.Native.open(Native Method) at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:288) at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427) at com.sun.jna.Library$Handler.<init>(Library.java:179) at com.sun.jna.Native.load(Native.java:591) at com.sun.jna.Native.load(Native.java:565) 位于libMagickCore-7.Q16HDRI.so.2目录中的AWS Lambda函数中。据我了解,将lib ENV设置到此目录应显示JNA在何处加载本机依赖项。

我的Lambda设置是否有问题,或者假设设置LD_LIBRARY_PATH时JNA应该找到这些库?

0 个答案:

没有答案