tma*_*ath 6 java shared-libraries amazon-web-services selenium-chromedriver aws-lambda
我正在尝试创建一个 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
Run Code Online (Sandbox Code Playgroud)
我已了解到您可以通过 Lambda 中的软件层包含本机库,并且我了解您必须在 Amazon Linux 环境中对其进行编译,如此处所述。
但是,在压缩文件并创建图层后,它仍然没有拾取库,并给出相同的错误。我还尝试将它放在 zip 文件中的各个目录中,例如/opt、/opt/lib,并LD_LIBRARY_PATH在函数中设置变量,但仍然没有成功。任何帮助表示赞赏。
tma*_*ath 11
好吧,我终于想通了。在阅读了更多文档后,我发现了两个关键点:
首先,从https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html,LD_LIBRARY_PATH默认设置为:
/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib
其次,来自https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path:
各层被解压到
/opt函数执行环境的目录中。
因此,将这两个事实放在一起,我推断,如果我将依赖项放入/lib层内,它们最终会出现在/opt/lib,即LD_LIBRARY_PATH,瞧 - 它起作用了。
| 归档时间: |
|
| 查看次数: |
7777 次 |
| 最近记录: |