繁体   English   中英

使用JAR的AWS Lambda包本机可执行文件

[英]AWS Lambda Package Native Executable with JAR

我有一个在JVM上运行的应用程序,作为胖罐提供。 它需要调用本机Linux二进制文件,例如ffmpeg Zip文件需要包含哪些目录结构才能将jar和可执行文件打包在一起? 我找不到文档,只是使用我没有使用的构建工具的代码示例。

让我们假装我的lambda的名字是blah 我希望得到一个答案:

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

这是我写的一个不起作用的bash脚本。 它只是将fat jar和本机可执行文件放在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)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM