gpt4 book ai didi

java - AWS Lambda 使用 JAR 打包 native 可执行文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:58 25 4
gpt4 key购买 nike

我有一个在 JVM 上运行的应用程序,以 fat jar 形式提供。它需要调用 native Linux 二进制文件,例如 ffmpeg。 Zip 文件需要包含什么目录结构才能将 jar 和可执行文件打包在一起?我找不到文档,只能找到使用我未使用过的构建工具的代码示例。

假设我的 lambda 的名称是 blah。我希望得到这样的答案:

Deployable jar contains:
+ blah/ # contains fat jar
+ lib/ # contains ffmpeg

这是我编写的 bash 脚本,但不起作用。它只是将 fat jar 和 native 可执行文件放在 dist/ 目录中,然后将它们压缩在一起。

FATJAR=blah-assembly-0.0.4.jar
mkdir -p dist/
rm -f dist/*
rm -f $DEPLOYED_ZIP
cp $FATJAR dist/
cp /usr/local/bin/ffmpeg dist/
(cd dist && zip -r $FATJAR ffmpeg && mv $FATJAR ../$DEPLOYED_ZIP)

最佳答案

只要包中包含的 native 二进制文件出现在 PATH 中或通过其完整路径调用,任何 zip 文件结构都可以。在这两种情况下,这意味着您必须通过以下方式之一更新 Java 代码:

  1. 修改 PATH 环境变量或
  2. 通过完整路径调用二进制文件。

在撰写本文时,可以从 LAMBDA_TASK_ROOT 环境变量中读取在 AWS Lambda 系统上提取包内容的目录路径。

关于java - AWS Lambda 使用 JAR 打包 native 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com