Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWS Lambda在层中找不到共享对象文件_Java_Amazon Web Services_Aws Lambda_Selenium Chromedriver_Shared Libraries - Fatal编程技术网

Java AWS Lambda在层中找不到共享对象文件

Java AWS Lambda在层中找不到共享对象文件,java,amazon-web-services,aws-lambda,selenium-chromedriver,shared-libraries,Java,Amazon Web Services,Aws Lambda,Selenium Chromedriver,Shared Libraries,我正在尝试创建一个Lambda函数,该函数在Java中运行Selenium测试,作为AWS中CI/CD管道的一部分。但是,该函数安装Chromedriver后失败,因为Chromedriver所需的.so文件丢失: /tmp/chrome_driver7811961600494562711/chromedriver: error while loading shared libraries: libglib-2.0.so.0: cannot open shared object file: No

我正在尝试创建一个Lambda函数,该函数在Java中运行Selenium测试,作为AWS中CI/CD管道的一部分。但是,该函数安装Chromedriver后失败,因为Chromedriver所需的.so文件丢失:

/tmp/chrome_driver7811961600494562711/chromedriver: error while loading shared libraries: libglib-2.0.so.0: cannot open shared object file: No such file or directory
我已经读到,您可以通过Lambda中的软件层包含本机库,并且我知道您必须在amazonlinux环境中编译它,如前所述


但是,在压缩文件并创建“我的图层”之后,它仍然没有拾取库,并给出相同的错误。我还尝试将它放在zip文件的不同目录中,如
/opt
/opt/lib
,并在函数中设置
LD\u LIBRARY\u PATH
变量,但仍然没有成功。谢谢你的帮助。

好的,我终于明白了。在阅读了更多文档后,我发现了两个关键点:

首先,从,默认情况下,
LD_LIBRARY_路径
设置为:

/lib64:/usr/lib64:$LAMBDA\u RUNTIME\u DIR:$LAMBDA\u RUNTIME\u DIR/lib:$LAMBDA\u TASK\u ROOT:$LAMBDA\u TASK\u ROOT/lib:/opt/lib

第二,来自:

层被提取到函数执行环境中的
/opt
目录中


因此,将这两个事实放在一起,我推断如果我将依赖项放在层内的
/lib
中,它们将最终放在
/opt/lib
,它位于
LD\u LIBRARY\u PATH
中,瞧,它起作用了。

我认为您应该将共享库放在
/lib64/
中。另外,还不确定如何部署lambda,您只需创建一个docker映像,就可以使用它在本地进行测试。必须更快且完全可在本地测试。
/lib64
也不能工作。我正在通过AWS控制台部署它。我只是不明白为什么这个问题有这么多不同的答案,但没有一个是有效的……我只是想澄清一下,因为我已经在这个问题上绞尽脑汁了一段时间:你真的将.so文件移动到一个名为lib的文件夹中,然后将其压缩,它就可以工作了?我发誓我试过了,但没用。需要检查的几件事:确保没有覆盖环境变量中的LD_LIBRARY_路径。缺少的依赖项可能不止1个,因此请确保错误没有抱怨其他依赖项。请确保您使用的是64位版本而不是32位版本,否则会出现类似的错误-请确保将其展开以读取错误的全文。